PHP 导出指定表结构(含 DROP TABLE 语句)
作者:未知, 来源:网络, 阅读:21, 发布时间:2025-04-11
使用 PDO 导出多个指定表的结构
<?php
// 数据库配置
$db_host = 'localhost';
$db_user = 'username';
$db_pass = 'password';
$db_name = 'database_name';
$tables_to_export = ['table1', 'table2', 'table3']; // 要导出的表名数组
$output_file = 'tables_structure_' . date('Ymd_His') . '.sql';
try {
// 创建 PDO 连接
$conn = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql_content = "-- Database table structures\n";
$sql_content .= "-- Generated: " . date('Y-m-d H:i:s') . "\n\n";
foreach ($tables_to_export as $table_name) {
// 获取表结构
$stmt = $conn->query("SHOW CREATE TABLE `$table_name`");
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row && isset($row['Create Table'])) {
$sql_content .= "-- Table structure for `$table_name`\n";
$sql_content .= "DROP TABLE IF EXISTS `$table_name`;\n";
$sql_content .= $row['Create Table'] . ";\n\n";
} else {
$sql_content .= "-- 错误: 无法获取表 `$table_name` 的结构\n\n";
}
}
// 写入文件
file_put_contents($output_file, $sql_content);
echo "表结构导出成功,文件: " . $output_file;
} catch(PDOException $e) {
echo "导出失败: " . $e->getMessage();
}
?>
PDO 与 mysqli 获取数据的区别:
操作 |
mysqli 方式 |
PDO 方式 |
获取关联数组 |
$result->fetch_assoc() |
$stmt->fetch(PDO::FETCH_ASSOC) |
获取数字索引数组 |
$result->fetch_row() |
$stmt->fetch(PDO::FETCH_NUM) |
获取对象 |
$result->fetch_object() |
$stmt->fetch(PDO::FETCH_OBJ) |