0

我正在尝试使用以下代码对按钮单击进行备份,每次单击时我都会得到空数据库。我尝试了所有文章,但结果相同..任何人都可以帮我解决这个问题。

 <?php
 ob_start();

 $username = "root"; 
 $password = ""; 
 $hostname = "localhost"; 
 $dbname   = "cars";

 $command = "D:\\..\\wamp64\\bin\\mysqldump  --add-drop-table host=$hostname
--user=$username ";
 if ($password) 
    $command.= "--password=". $password ." "; 
 $command.= $dbname;
 system($command);

 $dump = ob_get_contents(); 
 ob_end_clean();

// send dump file to the output
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($dbname . "_" . 
date("Y-m-d_H-i-s").".sql"));

flush();
echo $dump;
exit();
?>
4

1 回答 1

0

我本来打算浏览你的代码,但我想我不妨只给你一个我之前从我的一个网站制作的代码,因为它与你的要求相同。我可以一目了然地告诉您,您的数据库在单击时清空的原因是因为您在 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>
于 2016-10-09T21:41:43.460 回答