php代码
<?php
/**
* 导出 MySQL 数据库的表结构及每个表的前 8 条数据
* 数据按 id 倒序(若无 id 则按主键/第一列倒序)
* 数据库:111,用户名:11111,密码:1111
*/
$host = 'localhost';
$user = '1111';
$pass = '11111111111111111';
$dbname = '111';
$conn = new mysqli($host, $user, $pass, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$conn->set_charset("utf8mb4");
// 输出文件头
echo "-- 导出数据库: $dbname\n";
echo "-- 生成时间: " . date('Y-m-d H:i:s') . "\n";
echo "-- 每个表导出前 8 条数据,按 id(或主键/首列)倒序排列\n\n";
echo "SET FOREIGN_KEY_CHECKS=0;\n\n";
// 获取所有表
$tablesResult = $conn->query("SHOW TABLES");
if (!$tablesResult) {
die("获取表列表失败: " . $conn->error);
}
while ($row = $tablesResult->fetch_row()) {
$table = $row[0];
// 1. 导出表结构
$createResult = $conn->query("SHOW CREATE TABLE `$table`");
if (!$createResult) {
echo "-- 无法获取表 `$table` 的结构,跳过\n\n";
continue;
}
$createRow = $createResult->fetch_assoc();
$createSQL = $createRow['Create Table'];
echo "-- 表结构: `$table`\n";
echo "DROP TABLE IF EXISTS `$table`;\n";
echo $createSQL . ";\n\n";
// 2. 获取表的列名,确定排序字段(优先 id,其次主键,最后第一列)
$colsResult = $conn->query("SHOW COLUMNS FROM `$table`");
$colNames = [];
while ($col = $colsResult->fetch_assoc()) {
$colNames[] = $col['Field'];
}
$orderCol = null;
if (in_array('id', $colNames)) {
$orderCol = 'id';
} else {
// 尝试获取主键
$pkQuery = $conn->query("SHOW KEYS FROM `$table` WHERE Key_name = 'PRIMARY'");
if ($pkQuery && $pkQuery->num_rows > 0) {
$pkRow = $pkQuery->fetch_assoc();
$orderCol = $pkRow['Column_name'];
} else {
// 取第一列(如果存在)
$orderCol = $colNames[0] ?? null;
}
}
// 构建 ORDER BY 子句
$orderClause = $orderCol ? "ORDER BY `$orderCol` DESC" : "";
// 3. 导出前 8 条数据(按指定字段倒序)
$dataResult = $conn->query("SELECT * FROM `$table` $orderClause LIMIT 8");
if (!$dataResult) {
echo "-- 无法查询表 `$table` 的数据,跳过\n\n";
continue;
}
if ($dataResult->num_rows > 0) {
// 获取字段列表
$fields = $dataResult->fetch_fields();
$fieldNames = array_map(function($f) {
return "`" . $f->name . "`";
}, $fields);
$fieldList = implode(", ", $fieldNames);
// 组装多行 INSERT
$insertPrefix = "INSERT INTO `$table` ($fieldList) VALUES ";
$rows = [];
while ($dataRow = $dataResult->fetch_assoc()) {
$values = [];
foreach ($dataRow as $key => $val) {
if ($val === null) {
$values[] = "NULL";
} else {
$escaped = $conn->real_escape_string($val);
$values[] = "'" . $escaped . "'";
}
}
$rows[] = "(" . implode(", ", $values) . ")";
}
echo $insertPrefix . implode(", ", $rows) . ";\n\n";
}
$dataResult->free();
}
$tablesResult->free();
echo "SET FOREIGN_KEY_CHECKS=1;\n";
$conn->close();
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END




![表情[aoman]-红穆笔记](https://www.4s5.cn/wp-content/themes/zibll/img/smilies/aoman.gif)



暂无评论内容