+
39
-

回答

可以使用以下几种方式:

方法一:使用 SHOW CREATE TABLE

这是最简单、直接的方法。通过执行 SQL 查询 SHOW CREATE TABLE 表名 来获取建表语句。

示例代码

<?php
$host = 'localhost';
$dbname = 'your_database';
$user = 'root';
$pass = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $table = 'users'; // 替换为你想要导出的表名

    $stmt = $pdo->prepare("SHOW CREATE TABLE `$table`");
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    $createTableSQL = $row['Create Table'];

    echo "<pre>";
    echo htmlspecialchars($createTableSQL) . ";";
    echo "</pre>";

} catch (PDOException $e) {
    die("数据库连接失败: " . $e->getMessage());
}
?>

输出示例

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `nickname` varchar(50) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

方法二:使用 mysqldump 命令(适用于命令行)

如果你有权限在服务器上运行 shell 命令,也可以用 PHP 调用 mysqldump 命令来导出建表语句。

示例代码

<?php
$table = 'users';
$output_file = 'users_table_structure.sql';

exec("mysqldump -u root -p'your_password' --no-data your_database $table > $output_file");

echo "表结构已导出到 $output_file";
?>

注意:

--no-data 表示只导出结构不导出数据。

确保你的 PHP 运行用户有权限执行 shell 命令和写入文件。

不建议在生产环境中使用此方法,容易带来安全风险。

网友回复

我知道答案,我要回答