| @@ -22,13 +22,13 @@ if ($dopost == "viewinfo") { | |||||
| if (empty($tablename)) { | if (empty($tablename)) { | ||||
| echo "没有指定表名"; | echo "没有指定表名"; | ||||
| } else { | } else { | ||||
| // 获取创建表的 SQL 语句 | |||||
| //获取创建表的SQL语句 | |||||
| $dsql->SetQuery("SELECT sql FROM sqlite_master WHERE type='table' AND name='$tablename'"); | $dsql->SetQuery("SELECT sql FROM sqlite_master WHERE type='table' AND name='$tablename'"); | ||||
| $dsql->Execute('me'); | $dsql->Execute('me'); | ||||
| $row = $dsql->GetArray('me', SQLITE3_ASSOC); | $row = $dsql->GetArray('me', SQLITE3_ASSOC); | ||||
| if ($row) { | if ($row) { | ||||
| $createTableSql = str_replace(" ", "\r\n", $row['sql']); | $createTableSql = str_replace(" ", "\r\n", $row['sql']); | ||||
| echo trim($createTableSql) . "\n\n"; | |||||
| echo trim($createTableSql)."\n\n"; | |||||
| } | } | ||||
| } | } | ||||
| echo '</xmp>'; | echo '</xmp>'; | ||||
| @@ -57,7 +57,7 @@ else if ($dopost == "opimize") { | |||||
| if ($rs) { | if ($rs) { | ||||
| echo "执行优化表 {$tablename} 完成<br>"; | echo "执行优化表 {$tablename} 完成<br>"; | ||||
| } else { | } else { | ||||
| echo "执行优化表 {$tablename} 失败,原因是:" . $dsql->GetError(); | |||||
| echo "执行优化表 {$tablename} 失败,原因是:".$dsql->GetError(); | |||||
| } | } | ||||
| } else { | } else { | ||||
| $rs = $dsql->ExecuteNoneQuery("OPTIMIZE TABLE `$tablename`"); | $rs = $dsql->ExecuteNoneQuery("OPTIMIZE TABLE `$tablename`"); | ||||
| @@ -77,7 +77,7 @@ else if ($dopost == "opimizeAll") { | |||||
| if ($rs) { | if ($rs) { | ||||
| echo "执行数据库完成<br>"; | echo "执行数据库完成<br>"; | ||||
| } else { | } else { | ||||
| echo "执行数据库失败,原因是:" . $dsql->GetError(); | |||||
| echo "执行数据库失败,原因是:".$dsql->GetError(); | |||||
| } | } | ||||
| } else { | } else { | ||||
| while ($row = $dsql->GetArray('t', MYSQL_BOTH)) { | while ($row = $dsql->GetArray('t', MYSQL_BOTH)) { | ||||
| @@ -91,42 +91,42 @@ else if ($dopost == "opimizeAll") { | |||||
| } | } | ||||
| exit(); | exit(); | ||||
| } | } | ||||
| // 修复表 | |||||
| //修复表 | |||||
| else if ($dopost == "repair") { | else if ($dopost == "repair") { | ||||
| CheckCSRF(); | CheckCSRF(); | ||||
| if (empty($tablename)) { | if (empty($tablename)) { | ||||
| echo "没有指定表名"; | echo "没有指定表名"; | ||||
| } else { | } else { | ||||
| if ($cfg_dbtype =='sqlite') { | if ($cfg_dbtype =='sqlite') { | ||||
| // SQLite 数据库使用 VACUUM 尝试修复和优化 | |||||
| //SQLite数据库使用VACUUM尝试修复和优化 | |||||
| $rs = $dsql->ExecuteNoneQuery("VACUUM"); | $rs = $dsql->ExecuteNoneQuery("VACUUM"); | ||||
| if ($rs) { | if ($rs) { | ||||
| echo "对表 {$tablename} 尝试修复和优化完成<br>"; | echo "对表 {$tablename} 尝试修复和优化完成<br>"; | ||||
| } else { | } else { | ||||
| echo "对表 {$tablename} 尝试修复和优化失败,原因是:" . $dsql->GetError(); | |||||
| echo "对表 {$tablename} 尝试修复和优化失败,原因是:".$dsql->GetError(); | |||||
| } | } | ||||
| } else { | } else { | ||||
| // 非 SQLite 数据库(如 MySQL)使用 REPAIR TABLE 语句 | |||||
| //非SQLite数据库(如 MySQL)使用REPAIR TABLE语句 | |||||
| $rs = $dsql->ExecuteNoneQuery("REPAIR TABLE `{$tablename}`"); | $rs = $dsql->ExecuteNoneQuery("REPAIR TABLE `{$tablename}`"); | ||||
| if ($rs) { | if ($rs) { | ||||
| echo "修复表 {$tablename} 完成<br>"; | echo "修复表 {$tablename} 完成<br>"; | ||||
| } else { | } else { | ||||
| echo "修复表 {$tablename} 失败,原因是:" . $dsql->GetError(); | |||||
| echo "修复表 {$tablename} 失败,原因是:".$dsql->GetError(); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| exit(); | exit(); | ||||
| } | } | ||||
| // 修复全部表 | |||||
| //修复全部表 | |||||
| else if ($dopost == "repairAll") { | else if ($dopost == "repairAll") { | ||||
| CheckCSRF(); | CheckCSRF(); | ||||
| if ($cfg_dbtype =='sqlite') { | if ($cfg_dbtype =='sqlite') { | ||||
| // SQLite 数据库使用 VACUUM 尝试修复和优化整个数据库 | |||||
| //SQLite 数据库使用VACUUM尝试修复和优化整个数据库 | |||||
| $rs = $dsql->ExecuteNoneQuery("VACUUM"); | $rs = $dsql->ExecuteNoneQuery("VACUUM"); | ||||
| if ($rs) { | if ($rs) { | ||||
| echo "对所有表尝试修复和优化完成<br>"; | echo "对所有表尝试修复和优化完成<br>"; | ||||
| } else { | } else { | ||||
| echo "对所有表尝试修复和优化失败,原因是:" . $dsql->GetError(); | |||||
| echo "对所有表尝试修复和优化失败,原因是:".$dsql->GetError(); | |||||
| } | } | ||||
| } else { | } else { | ||||
| $dsql->SetQuery("Show Tables"); | $dsql->SetQuery("Show Tables"); | ||||
| @@ -136,7 +136,7 @@ else if ($dopost == "repairAll") { | |||||
| if ($rs) { | if ($rs) { | ||||
| echo "修复表 {$row[0]} 完成<br>"; | echo "修复表 {$row[0]} 完成<br>"; | ||||
| } else { | } else { | ||||
| echo "修复表 {$row[0]} 失败,原因是: " . $dsql->GetError(); | |||||
| echo "修复表 {$row[0]} 失败,原因是: ".$dsql->GetError(); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -211,47 +211,20 @@ else if ($dopost == "query") { | |||||
| exit(); | exit(); | ||||
| } else if ($dopost == "docs") { | } else if ($dopost == "docs") { | ||||
| if ($cfg_dbtype == 'sqlite') { | if ($cfg_dbtype == 'sqlite') { | ||||
| die("SQLite 数据库不支持此功能"); | |||||
| die("SQLite数据库不支持此功能"); | |||||
| } | } | ||||
| CheckCSRF(); | CheckCSRF(); | ||||
| $dsql->SetQuery("SHOW TABLES"); | $dsql->SetQuery("SHOW TABLES"); | ||||
| $dsql->Execute('t'); | $dsql->Execute('t'); | ||||
| $output = '<!DOCTYPE html> | $output = '<!DOCTYPE html> | ||||
| <html lang="en"> | |||||
| <html> | |||||
| <head> | <head> | ||||
| <meta charset="UTF-8"> | <meta charset="UTF-8"> | ||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
| <link rel="stylesheet" href="/static/web/css/bootstrap.min.css"> | <link rel="stylesheet" href="/static/web/css/bootstrap.min.css"> | ||||
| <link rel="stylesheet" href="/static/web/css/admin.css"> | <link rel="stylesheet" href="/static/web/css/admin.css"> | ||||
| <title>DedeBIZ数据库文档</title> | <title>DedeBIZ数据库文档</title> | ||||
| <style> | |||||
| body { | |||||
| background-color: #f4f6f9; | |||||
| font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; | |||||
| } | |||||
| .card { | |||||
| border: none; | |||||
| border-radius: 10px; | |||||
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); | |||||
| transition: transform 0.2s ease-in-out; | |||||
| } | |||||
| .card:hover { | |||||
| transform: translateY(-5px); | |||||
| } | |||||
| .card-header { | |||||
| background-color: #1eb867; | |||||
| color: white; | |||||
| border-top-left-radius: 10px; | |||||
| border-top-right-radius: 10px; | |||||
| } | |||||
| .table thead th { | |||||
| background-color: #e9ecef; | |||||
| padding: 10px; | |||||
| } | |||||
| .table tbody td { | |||||
| padding: 10px; | |||||
| } | |||||
| </style> | |||||
| <style>.card{border:none;border-radius:0.5rem;box-shadow:0 4px 8px rgba(0,0,0,0.1);transition:transform 0.5s}.card:hover{transform:translateY(-0.25rem)}.card-header{background-color:#1eb867;color:white;border-top-left-radius:0.5rem!important;border-top-right-radius:0.5rem!important}.table thead th{background-color:#e9ecef;padding:0.5rem}.table tbody td{padding:0.5rem}</style> | |||||
| </head> | </head> | ||||
| <body> | <body> | ||||
| <div class="container-fluid"> | <div class="container-fluid"> | ||||
| @@ -260,24 +233,22 @@ else if ($dopost == "query") { | |||||
| <li class="breadcrumb-item active"><a href="sys_sql_query.php">SQL命令工具</a></li> | <li class="breadcrumb-item active"><a href="sys_sql_query.php">SQL命令工具</a></li> | ||||
| <li class="breadcrumb-item">数据库文档</li> | <li class="breadcrumb-item">数据库文档</li> | ||||
| </ol>'; | </ol>'; | ||||
| while ($row = $dsql->GetArray('t', MYSQL_BOTH)) { | while ($row = $dsql->GetArray('t', MYSQL_BOTH)) { | ||||
| $tableName = $row[0]; | $tableName = $row[0]; | ||||
| $output .= '<div class="card mb-4"> | |||||
| $output .= '<div class="card mb-3"> | |||||
| <div class="card-header"> | <div class="card-header"> | ||||
| <span>表名: ' . $tableName . '</span> | |||||
| <span>表名: '.$tableName.'</span> | |||||
| </div> | </div> | ||||
| <div class="card-body">'; | <div class="card-body">'; | ||||
| // 获取表的注释 | |||||
| //获取表的注释 | |||||
| $dsql->SetQuery("SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '$tableName'"); | $dsql->SetQuery("SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '$tableName'"); | ||||
| $dsql->Execute('c'); | $dsql->Execute('c'); | ||||
| $tableCommentRow = $dsql->GetArray('c', MYSQL_BOTH); | $tableCommentRow = $dsql->GetArray('c', MYSQL_BOTH); | ||||
| $tableComment = $tableCommentRow['TABLE_COMMENT']; | $tableComment = $tableCommentRow['TABLE_COMMENT']; | ||||
| if (!empty($tableComment)) { | if (!empty($tableComment)) { | ||||
| $output .= '<p><strong>表注释:</strong> ' . $tableComment . '</p>'; | |||||
| $output .= '<p><strong>表注释:</strong> '.$tableComment.'</p>'; | |||||
| } | } | ||||
| // 获取表的字段信息 | |||||
| //获取表的字段信息 | |||||
| $dsql->SetQuery("SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '$tableName'"); | $dsql->SetQuery("SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '$tableName'"); | ||||
| $dsql->Execute('col'); | $dsql->Execute('col'); | ||||
| $output .= '<table class="table table-striped table-bordered"> | $output .= '<table class="table table-striped table-bordered"> | ||||
| @@ -299,28 +270,25 @@ else if ($dopost == "query") { | |||||
| $columnComment = $colRow['COLUMN_COMMENT']; | $columnComment = $colRow['COLUMN_COMMENT']; | ||||
| $output .= '<tr> | $output .= '<tr> | ||||
| <td>' . $columnName . '</td> | |||||
| <td>' . $columnType . '</td> | |||||
| <td>' . $isNullable . '</td> | |||||
| <td>' . ($columnDefault!== null? $columnDefault : '无') . '</td> | |||||
| <td>' . $columnComment. '</td> | |||||
| <td>'.$columnName.'</td> | |||||
| <td>'.$columnType.'</td> | |||||
| <td>'.$isNullable.'</td> | |||||
| <td>'.($columnDefault !== null? $columnDefault : '无').'</td> | |||||
| <td>'.$columnComment. '</td> | |||||
| </tr>'; | </tr>'; | ||||
| } | } | ||||
| $output .= '</tbody> | $output .= '</tbody> | ||||
| </table> | </table> | ||||
| </div> | </div> | ||||
| </div>'; | </div>'; | ||||
| } | } | ||||
| $output .= '</div> | $output .= '</div> | ||||
| <footer class="bg-light text-center py-3"> | <footer class="bg-light text-center py-3"> | ||||
| <p class="mb-0">版权所有 © ' . date('Y') . ' <a href="https://www.dedebiz.com/?from=dbdocs" class="text-success">DedeBIZ</a> 保留所有权利。</p> | |||||
| <p class="mb-0">版权所有 © '.date('Y').' <a href="https://www.dedebiz.com/?from=dbdocs" class="text-success">DedeBIZ</a> 保留所有权利。</p> | |||||
| </footer> | </footer> | ||||
| </body> | </body> | ||||
| </html>'; | </html>'; | ||||
| // 输出 HTML 文档 | |||||
| //输出网页文档 | |||||
| header('Content-Type: text/html'); | header('Content-Type: text/html'); | ||||
| echo $output; | echo $output; | ||||
| exit(); | exit(); | ||||