使用PHP和MySQL重置数据库

时间:2013-06-28 13:41:35

标签: php mysql database

我正在尝试编写一个将重置数据库的脚本。我有一个我正在使用的导出,我可以使用phpMyAdmin导入。 SQL文件与我正在使用的脚本位于相同的位置。

当我运行它时,我很早就在文件中的sql文件中出现错误。

<?php
$mysqli = new mysqli('host', 'username', 'password', 'database');
$mysqli->query('SET foreign_key_checks = 0');
if ($result = $mysqli->query("SHOW TABLES"))
{
    while($row = $result->fetch_array(MYSQLI_NUM))
    {
        $mysqli->query('DROP TABLE IF EXISTS '.$row[0]);
    }
}

$mysqli->query('SET foreign_key_checks = 1');



$sql_filename = 'clean.sql';
$sql_contents = file_get_contents($sql_filename);
$result = $mysqli->query($sql_contents) or die("Database query failed: ".$mysqli->error);

$mysqli->close();

?>

2 个答案:

答案 0 :(得分:0)

您需要执行multi_query()以插入所有数据

$result = $mysqli->multi_query($sql_contents) or die("Database query failed: ".$mysqli->error);

见这里; http://php.net/manual/en/mysqli.quickstart.multiple-statement.php http://www.php.net/manual/en/mysqli.multi-query.php

答案 1 :(得分:0)

mysqli::query()的调用中,您无法执行多个语句,而我认为您的clean.sql包含许多语句。

您可能希望一次读取一个语句(默认情况下;是语句分隔符),或者更好,使用以下内容对mysql客户端进行系统调用:< / p>

<?php
    exec("/path/to/mysql -D [your_database] < /path/to/clean.sql");