2013-06-28 2 views
0

Я пытаюсь написать сценарий, который сбросит базу данных. У меня есть экспорт, который я использую, чтобы импортировать с помощью phpMyAdmin. Файл SQL находится в том же месте, что и используемый мной сценарий.Сбросить базу данных с помощью PHP и MySQL

Когда я запустил это, я получаю сообщение об ошибке в файле 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

Что ошибка вы получаете? – Karl

+0

Я не думаю, что метод запроса может выполнять несколько запросов одновременно (если только они не связаны с Союзом), поэтому у вас есть вероятность как-то разделить запросы из файла clean.sql для выполнения одного запроса при каждом вызове MySQLi :: запрос – paranoid

ответ

0

Вы не можете выполнить более одного оператора при вызове mysqli::query(), в то время как я полагаю, ваш clean.sql содержит много.

Вы можете прочитать файл одно заявление в то время (; является утверждение разделителем по умолчанию), или лучше, сделать системный вызов к клиенту mysql с чем-то вроде этого:

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