使用PHP和MySQL重置数据库

使用PHP和MySQL重置数据库,php,mysql,database,Php,Mysql,Database,我正在尝试编写一个脚本来重置数据库。我有一个我正在使用的导出,我可以使用phpMyAdmin导入。SQL文件与我正在使用的脚本位于同一位置 当我运行这个程序时,我在sql文件中很早就发现了一个错误 <?php $mysqli = new mysqli('host', 'username', 'password', 'database'); $mysqli->query('SET foreign_key_checks = 0'); if ($result = $mysqli->q

我正在尝试编写一个脚本来重置数据库。我有一个我正在使用的导出,我可以使用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();

?>

您需要执行多重查询()以插入所有数据

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

在调用
mysqli::query()
时不能执行多个语句,而我假设您的
clean.sql
包含许多语句

您可能希望一次读取一条语句(
默认情况下是语句分隔符),或者更好的方法是,使用如下内容对
mysql
客户端进行系统调用:

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

您收到了什么错误?我不认为query方法可以一次执行多个查询(除非它们与Union连接),因此您可能需要从clean.sql文件中拆分查询,以便在每次调用mysqli::query时执行一个查询