使用 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)