我试图创建一个带有两个按钮的简单页面,而当按下其中一个按钮时,数据库被转储(mysqldump
)而另一个被恢复(导入)。
我会尝试在一个开发环境中执行此操作,我没有集中式服务器,有时我发现自己根据日期和情况,脚本本身从几台不同的PC上工作(即代码)我只是与SpiderOak同步,我试图让mysqldump在PC之间做同样的事情。
的index.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>Herramienta Back Up/Restore DataBase ;)</title>
<link rel="stylesheet" type="text/css" href="Babifu.css">
</head>
<body>
<center>
<img class="thumb" src="http://lorempixel.com/g/450/370/nightlife/"/><br /><br />
<form id="me1" action="backup.php" method="post"><br /><br /><br />
<input type="submit" value="Backup database" />
</form>
<form id="me2" action="restore.php" method="post"><br /><br /><br /><br /><br /><br />
<input type="submit" value="Importar" />
</form>
<div class="clear"></div>
</center>
</body>
</html>
backup.php
<?php
include('conection.php');
try {
$qls = "mysqldump --default-character-set=UTF8 --single-transaction -u root -p[Paswordofthedatabase] u739462586_dtren > restoresync.sql";
$stmt = $con->prepare($qls);
$rslt = $stmt->execute();
echo "Base de Datos Salvadas Correctamente";
} catch(PDOException $e) {
echo $e->getMessage;
}
?>
restore.php
<?php
include('conection.php');
try {
$qls = "mysql -u root -p[Paswordofthedatabase] < restoresync.sql";
$stmt = $con->prepare($qls);
$rslt = $stmt->execute();
echo"Base de Datos Restaurados/Importados Correctamente";
} catch(PDOException $e) {
echo $e->getMessage;
}
?>
问题是,它无法正常工作,控制台不会显示任何错误消息,因此它会执行PHP。
甚至可以通过查询执行此操作吗?我该怎么做?这段代码有什么问题?
有没有什么方法可以确保在特定文件夹上创建备份?任何建议,评论,澄清请求,问题或答案都将非常感激。
答案 0 :(得分:3)
这些不是MySQL查询,而是通过终端执行的命令。 使用此命令执行命令并获得完整输出:
$dump_output = shell_exec("mysqldump --opt --default-character-set=UTF8 --single-transaction --protocol=TCP -u --user=root --password=dbpassword --host=localhost DB_NAME > restoresync.sql");
echo $dump_output; /* Your output of the dump command */
$restore_output = shell_exec("mysql -u root -p[Paswordofthedatabase] < restoresync.sql");
echo $restore_output; /* Your output of the restore command */
除了shell_exec()
,您还可以使用exec()
,例如 halfer 。
它们之间的区别在于,您使用shell_exec()
获得完整输出,而exec()
只获得输出返回的最后一行。