如何在php中恢复备份mysql文件

时间:2016-07-20 15:27:43

标签: php mysql database-restore

我已成功备份,但现在我需要在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";
    }
?>

4 个答案:

答案 0 :(得分:1)

您可以在php中使用exec(或shell_exec)函数:

exec("mysql -hHost -uUsername -pPassword database < ~/backupdir/backupFile.sql")

答案 1 :(得分:0)

您正在运行两次还原查询

mysql_query($sql);

if(mysql_query($sql))

删除第一个,然后执行:

if(mysql_query($sql))

如果您的备份文件包含许多查询,则无法正常工作。您需要执行以下操作之一:

  1. 直接执行mysql并将其提供给备份文件(参见皮埃尔的回答)
  2. mysql_切换到MySQLi个功能并使用mysqli::multi_querydocs
  3. 将文件内容转换为explode(';',$sql)的查询数组,然后通过循环遍历aray(将会很慢)执行查询

答案 2 :(得分:0)

您无法使用php mysql_*查询执行多个语句。因此,您应首先获取要使用的文件的完全限定路径并执行SQL语句:

$path = $base . $file_path;
$query = "SOURCE $path"

mysql_query($query);

答案 3 :(得分:0)

如果您使用Mysqli(推荐使用mysql_ *),您可以使用以下

$sql = file_get_contents($file_location);
if($conn->multi_query($sql)){
    while($conn->more_results() and $conn->next_result()){
        ;
    }
};