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