我本来打算浏览你的代码,但我想我不妨只给你一个我之前从我的一个网站制作的代码,因为它与你的要求相同。我可以一目了然地告诉您,您的数据库在单击时清空的原因是因为您在 exec 命令中使用以下命令删除了数据库--add-drop-table
:
如何删除和重新填充 mysql 数据库?
这是从我的一个后端管理页面站点中提取的代码,用于在需要时通过浏览器进行随机 MySQL 转储和备份。如果固定得当,它非常简单,但非常有效。使用单选按钮设置表单以进行下载或备份,然后从 cmdline 执行本地 mysqldump。备份将输出是否成功,通过测试查看文件是否已实际备份,下载将下载文件,该文件几乎是使用 PHP 站点此处的示例组合在一起的。我已经对其进行了一些调整,因此您可以将其添加到您自己的项目中
<?php
$username = "root";
$password = "root";
$host = "localhost";
$dbname = "new";
$path = "/Applications/MAMP/htdocs/html/test123.sql";
$backup = exec('/Applications/MAMP/Library/bin/mysqldump --user=' . $username . ' --password='. $password .' --host=' . $host . ' ' . $dbname . ' > ' . $path . '');
if (isset($_POST['backup'])) {
if (file_exists($path)) {
echo "Backup Success";
echo "<br>";
} else {
echo "Backup failed!";
echo "<br>";
echo "Backup of " . $dbname . " does not exist in " . $path;
}
}
if (isset($_POST['download'])) {
if (file_exists($path)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($path)); //Whoops...Forgot to change variable!
readfile($path); //Whoops...Forgot to change variable!
exit;
} else {
echo "File does not exist!";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Backup Page</title>
</head>
<body>
<form method="post">
<input type="radio" name="backup"> Backup <br>
<input type="radio" name="download"> Download <br>
<input type="submit" value="MySQL Backup">
</form>
</body>
</html>