Intereting Posts

как восстановить резервную копию файла mysql в php

У меня есть резервная копия, но теперь мне нужно восстановить эти данные в 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)) 

Если ваш файл резервной копии содержит много запросов, это не сработает. Вам необходимо выполнить одно из следующих действий:

  1. Выполните непосредственно mysql и подайте ему файл резервной копии (см. Ответ Пьера)
  2. Переключитесь с mysql_ на MySQLi и используйте mysqli::multi_query ( docs )
  3. Trnsform содержимое файла в массив запросов с explode(';',$sql) затем выполняйте запросы за один раз, перейдя через aray (будет медленным)