使用PHP和MySQL重置数据库
我正在尝试编写一个脚本来重置数据库。我有一个我正在使用的导出,我可以使用phpMyAdmin导入。SQL文件与我正在使用的脚本位于同一位置 当我运行这个程序时,我在sql文件中很早就发现了一个错误使用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
<?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时执行一个查询