Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中MySQL数据库的备份与恢复_Php_Mysql - Fatal编程技术网

PHP中MySQL数据库的备份与恢复

PHP中MySQL数据库的备份与恢复,php,mysql,Php,Mysql,我正在尝试使用PHP备份和恢复MySQL数据库: 备份: $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'dbpass'; $dbname = 'test'; $output = "D:/backup/test.sql"; exec("D:/xampp/mysql/bin/mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname > $output"); echo "Backu

我正在尝试使用PHP备份和恢复MySQL数据库:

备份:

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'dbpass';
$dbname = 'test';

$output = "D:/backup/test.sql";
exec("D:/xampp/mysql/bin/mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname > $output");
echo "Backup complete!";
恢复:

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'dbpass';
$dbname = 'test';

$output = "D:/restore/test.sql";
exec("D:/xampp/mysql/bin/mysql --opt -h $dbhost -u $dbuser -p $dbpass $dbname < $output");
echo "Restore complete!";
$dbhost='localhost';
$dbuser='root';
$dbpass='dbpass';
$dbname='test';
$output=“D:/restore/test.sql”;
exec(“D:/xampp/mysql/bin/mysql--opt-h$dbhost-u$dbuser-p$dbpass$dbname<$output”);
回显“恢复完成!”;
但两者都不起作用。备份完成后,我会检查空白的
test.sql
文件。恢复完成后,数据库仍为空


如何修复此问题?

使用Php编写备份脚本

<?php
define("BACKUP_PATH", "/home/abdul/");

$server_name   = "localhost";
$username      = "root";
$password      = "root";
$database_name = "world_copy";
$date_string   = date("Ymd");

$cmd = "mysqldump --routines -h {$server_name} -u {$username} -p{$password} {$database_name} > " . BACKUP_PATH . "{$date_string}_{$database_name}.sql";

exec($cmd);
?>

要还原的脚本

<?php

$restore_file  = "/home/abdul/20140306_world_copy.sql";
$server_name   = "localhost";
$username      = "root";
$password      = "root";
$database_name = "test_world_copy";

$cmd = "mysql -h {$server_name} -u {$username} -p{$password} {$database_name} < $restore_file";
exec($cmd);

?>


当您在Windows上时,您需要在路径内部使用向后斜杠(而不是向前斜杠)
exec
替换为
echo
;在命令行中运行生成的命令;读取错误消息。当我备份时,然后
20140306\u test.sql
文件为0字节,emptyIts对我有效,通过mysqldump的
完整路径,而不是
mysqldump
。完整路径表示“D:/xampp/mysql/bin/mysqldump”我已将数据库备份保存在下载表中,根据回答,我已给出了SQL文件的完整目录路径,但它仍然显示
字符串(0)”
如果它是多个数据库,那么它是如何工作的?我们尝试了使用循环的多个数据库,但每次都会恢复数据库的第一个文件。