У меня есть резервная копия, но теперь мне нужно восстановить эти данные в localhost. J мой резервный диск – это C: \ wamp \ www \ my Pawning Project \ backup_restore, это мой код восстановления.
<?php include '../Connection/connect.php'; $restore_data = $_GET['restore_data'];//file time $base="http://localhost/my%20Pawning%20Project/backup_restore/"; $query = "select * from backups where time='$restore_data'"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) { $file_path =$row['file_name']; } $sql=file_get_contents($base.$file_path); mysql_query($sql); if(mysql_query($sql)) { /*Success*/ echo "Successfully restored"; } else { /*Fail*/ echo "Error: Fail to Restore"; } ?>
Вы можете использовать функцию exec (или shell_exec ) в php:
exec("mysql -hHost -uUsername -pPassword database < ~/backupdir/backupFile.sql")
Вы не можете выполнять несколько операторов с mysql_*
php mysql_*
. Поэтому сначала вы должны получить полный путь к файлу, который хотите использовать, и выполнить инструкцию SQL:
$path = $base . $file_path; $query = "SOURCE $path" mysql_query($query);
Если вы хотите использовать Mysqli (рекомендуется по mysql_ *), вы можете использовать следующие
$sql = file_get_contents($file_location); if($conn->multi_query($sql)){ while($conn->more_results() and $conn->next_result()){ ; } };
Вы дважды выполняете запрос восстановления
mysql_query($sql); if(mysql_query($sql))
Удалите первый и просто выполните:
if(mysql_query($sql))
Если ваш файл резервной копии содержит много запросов, это не сработает. Вам необходимо выполнить одно из следующих действий:
mysql
и подайте ему файл резервной копии (см. Ответ Пьера) mysql_
на MySQLi
и используйте mysqli::multi_query
( docs ) explode(';',$sql)
затем выполняйте запросы за один раз, перейдя через aray (будет медленным)