/ / Reset База данни използвайки PHP и MySQL - php, mysql, database

Нулиране на база данни чрез PHP и MySQL - php, mysql, база данни

Опитвам се да напиша скрипт, който ще възстанови базата данни. Имам износ, който използвам, за да мога да импортирам с 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 за отговор № 1

Трябва да направите 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


0 за отговор № 2

Не можете да изпълните повече от един оператор при повикване към mysqli::query(), докато предполагам, че clean.sql съдържа много.

Може да искате да прочетете един файл едновременно (; по подразбиране е разделителят на израза), или по-добре, направете системно повикване до mysql клиент с нещо подобно:

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