PHP 针对mysql 自动生成数据字典

PHP  针对mysql  自动生成数据字典

确保php 可以正常使用mysqli 扩展

这里还需要注意 数据库密码   如果密码中有特殊字符 如:

首先,我们需要了解MySQL中的特殊字符包括哪些。MySQL中的特殊字符主要包括以下几类:

1. 单引号(')
2. 双引号(")
3. 反斜杠(\)
4. 美元符号($)
5. 反引号(`)
6. 百分号(%)
7. 下划线(_)

 如果密码为123456$Aki

那么密码应该写成:

$database['DB_PWD'] = '123456\$Aki';

 完整代码如下:

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];
    }
}

// 循环取得所有表的备注及表中列消息
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 = '';
// 循环所有表
//print_r($tables);

//列出所有表的表信息列表(表名  表名称)
$html .= '';
$html .= '';

foreach($tables as $k => $v)
{
    $sort = $k+1;
    $html .= '';
    $html .= '';
    $html .= '';
    $html .= '';
}
$html .= '
序号表名功能说明
' . $sort . '' . $v['TABLE_NAME'] . '' . $v['TABLE_COMMENT'] .'

'; $html .= "


"; //循环每个表的具体信息 foreach($tables as $k => $v) { $html .= ''; $html .= ''; $html .= ''; $html .= ''; foreach($v['COLUMN'] AS $f) { $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; } $html .= '
表名:' . $v['TABLE_NAME'] . ' ' . $v['TABLE_COMMENT'] . '
字段名数据类型默认值允许非空自动递增备注
' . $f['COLUMN_NAME'] . '' . $f['COLUMN_TYPE'] . '' . $f['COLUMN_DEFAULT'] . '' . ($f['IS_NULLABLE'] == 'YES' ? '是':'否') . '' . ($f['EXTRA'] == 'auto_increment'?'是':' ') . '' . $f['COLUMN_COMMENT'] . '

'; } /* 生成word */ //header ( "Content-type:application/vnd.ms-word" ); //header ( "Content-Disposition:attachment;filename={$database['DB_NAME']}数据字典.doc" ); /* 生成excel*/ //header ( "Content-type:application/vnd.ms-excel" ); //header ( "Content-Disposition:attachment;filename={$database['DB_NAME']}数据字典.xls" ); // 输出 echo ' 自动生成数据字典 '; echo '

'.$database['DB_NAME'].'数据字典

'; echo '

生成时间:' . date('Y-m-d H:i:s',time()) . '

'; echo $html; echo '

总共:' . count($tables) . '个数据表

'; echo ''; ?>

运行效果如图:

PHP 针对mysql 自动生成数据字典_第1张图片

方法二:其实也差不多 页面样式略有变化 

 

 $v) {
  $sql = 'SELECT * FROM ';
  $sql .= 'INFORMATION_SCHEMA.TABLES ';
  $sql .= 'WHERE ';
  $sql .= "table_name = '{$v['TABLE_NAME']}'  AND table_schema = '{$database}'";
  $table_result = mysqli_query($mysql_conn, $sql);
  while ($t = mysqli_fetch_array($table_result)) {
    $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}'";
  $fields = array();
  $field_result = mysqli_query($mysql_conn, $sql);
  while ($t = mysqli_fetch_array($field_result)) {
    $fields[] = $t;
  }
  $tables[$k]['COLUMN'] = $fields;
}
mysqli_close($mysql_conn);
$html = '';
//循环所有表
foreach ($tables as $k => $v) {
  if (!in_array($v['TABLE_NAME'], $no_show_table)) {
    $html .= '

' . ($k + 1) . '、' . $v['TABLE_COMMENT'] . ' (' . $v['TABLE_NAME'] . ')

'; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; foreach ($v['COLUMN'] as $f) { if (!in_array($f['COLUMN_NAME'], $no_show_field)) { $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; } } $html .= ''; $html .= '
字段名数据类型默认值允许非空自动递增备注
' . $f['COLUMN_NAME'] . '' . $f['COLUMN_TYPE'] . '' . $f['COLUMN_DEFAULT'] . '' . $f['IS_NULLABLE'] . '' . ($f['EXTRA'] == 'auto_increment' ? '是' : ' ') . '' . $f['COLUMN_COMMENT'] . '
'; } } ?> 数据字典

数据字典自动生成

效果如下图:

PHP 针对mysql 自动生成数据字典_第2张图片

你可能感兴趣的:(php,开发语言)