php 生成數(shù)據(jù)字典

<?php
/**
 * 生成mysql數(shù)據(jù)字典
 */
header("Content-type:text/html;charset=utf-8");
// 配置數(shù)據(jù)庫(kù)
$database = array();
$database['DB_HOST'] = 'localhost';
$database['DB_NAME'] = '***';
$database['DB_USER'] = '***';
$database['DB_PWD'] = '************';
$conn = mysqli_connect("{$database['DB_HOST']}", "{$database['DB_USER']}", "{$database['DB_PWD']}", $database['DB_NAME']);
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
}
mysqli_query($conn,"set names utf8");
$result = $conn->query('show tables', $mysql_conn);
if ($result->num_rows > 0) {

    // 取得所有表名
    while ($row = $result->fetch_array()) {
        $tables[]['TABLE_NAME'] = $row[0];
    }
}
// 循環(huán)取得所有表的備注及表中列消息
foreach($tables as $k => $v)
{
    $sql = 'SELECT * FROM ';
    $sql .= 'information_schema.TABLES ';
    $sql .= 'WHERE ';
    $sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database['DB_NAME']}'";
    $table_result = $conn->query($sql);
    while ($t = $table_result->fetch_array())
    {
        $tables[$k]['TABLE_COMMENT'] = $t['TABLE_COMMENT'];
    }
    $sql = 'SELECT * FROM ';
    $sql .= 'information_schema.COLUMNS ';
    $sql .= 'WHERE ';
    $sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database['DB_NAME']}'";
    $fields = array();
    $field_result = $conn->query($sql);
    while ($t = $field_result->fetch_array())
    {
        $fields[] = $t;
    }
    $tables[$k]['COLUMN'] = $fields;
}
$conn->close();
$html = '';
// 循環(huán)所有表
//print_r($tables);
foreach($tables as $k => $v)
{
    $html .= '<table border="1" cellspacing="0" cellpadding="0" align="center">';
    $html .= '<caption>表名:' . $v['TABLE_NAME'] . ' ' . $v['TABLE_COMMENT'] . '</caption>';
    $html .= '<tbody><tr><th>字段名</th><th>數(shù)據(jù)類型</th><th>默認(rèn)值</th><th>允許非空</th><th>自動(dòng)遞增</th><th>備注</th></tr>';
    $html .= '';
    foreach($v['COLUMN'] AS $f)
    {
        $html .= '<td class="c1">' . $f['COLUMN_NAME'] . '</td>';
        $html .= '<td class="c2">' . $f['COLUMN_TYPE'] . '</td>';
        $html .= '<td class="c3">' . $f['COLUMN_DEFAULT'] . '</td>';
        $html .= '<td class="c4">' . ($f['IS_NULLABLE'] == 'YES' ? '是':'否') . '</td>';
        $html .= '<td class="c5">' . ($f['EXTRA'] == 'auto_increment'?'是':' ') . '</td>';
        $html .= '<td class="c6">' . $f['COLUMN_COMMENT'] . '</td>';
        $html .= '</tr>';
    }
    $html .= '</tbody></table></p>';
}
/* 生成word */
//header ( "Content-type:application/vnd.ms-word" );
//header ( "Content-Disposition:attachment;filename={$database['DB_NAME']}數(shù)據(jù)字典.doc" );
/* 生成excel*/
//header ( "Content-type:application/vnd.ms-excel" );
//header ( "Content-Disposition:attachment;filename={$database['DB_NAME']}數(shù)據(jù)字典.xls" );
// 輸出
echo '<html>
  <meta charset="utf-8">
  <title>自動(dòng)生成數(shù)據(jù)字典</title>
  <style>
    body,td,th {font-family:"宋體"; font-size:12px;}
    table,h1,p{width:960px;margin:0px auto;}
    table{border-collapse:collapse;border:1px solid #CCC;background:#efefef;}
    table caption{text-align:left; background-color:#fff; line-height:2em; font-size:14px; font-weight:bold; }
    table th{text-align:left; font-weight:bold;height:26px; line-height:26px; font-size:12px; border:1px solid #CCC;padding-left:5px;}
    table td{height:20px; font-size:12px; border:1px solid #CCC;background-color:#fff;padding-left:5px;}
    .c1{ width: 150px;}
    .c2{ width: 150px;}
    .c3{ width: 80px;}
    .c4{ width: 100px;}
    .c5{ width: 100px;}
    .c6{ width: 300px;}
  </style>
  <body>';
echo '<h1 style="text-align:center;">'.$database['DB_NAME'].'數(shù)據(jù)字典</h1>';
echo '<p style="text-align:center;margin:20px auto;">生成時(shí)間:' . date('Y-m-d H:i:s') . '</p>';
echo $html;
echo '<p style="text-align:left;margin:20px auto;">總共:' . count($tables) . '個(gè)數(shù)據(jù)表</p>';
echo '</body></html>';
?>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尽爆,一起剝皮案震驚了整個(gè)濱河市湾笛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鸠儿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人进每,你說我怎么就攤上這事汹粤。” “怎么了田晚?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵嘱兼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我贤徒,道長(zhǎng)芹壕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任接奈,我火速辦了婚禮踢涌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘序宦。我一直安慰自己睁壁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布互捌。 她就那樣靜靜地躺著潘明,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秕噪。 梳的紋絲不亂的頭發(fā)上钳降,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音腌巾,去河邊找鬼牲阁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛壤躲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播备燃,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼碉克,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了并齐?” 一聲冷哼從身側(cè)響起漏麦,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎况褪,沒想到半個(gè)月后撕贞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡测垛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年捏膨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡号涯,死狀恐怖目胡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情链快,我是刑警寧澤誉己,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站域蜗,受9級(jí)特大地震影響巨双,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霉祸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脉执。 院中可真熱鬧,春花似錦半夷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宾舅。三九已至,卻和暖如春彩倚,著一層夾襖步出監(jiān)牢的瞬間筹我,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工帆离, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔬蕊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓哥谷,卻偏偏與公主長(zhǎng)得像岸夯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子们妥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容