我已成功备份,但现在我需要在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";
}
?>
答案 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))
如果您的备份文件包含许多查询,则无法正常工作。您需要执行以下操作之一:
mysql
并将其提供给备份文件(参见皮埃尔的回答)mysql_
切换到MySQLi
个功能并使用mysqli::multi_query
(docs)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()){
;
}
};