2016-10-09 35 views
0

我想按下按钮单击使用下面的代码,每次点击我得到空数据库备份。我试过所有的文章,但结果是一样的。可以帮助我解决这个问题。Mysql数据库备份按钮点击在php

<?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(); 
?> 
+0

你需要转储到一个文件,然后放进了丘陵地 – nogad

回答

0

我要通过你的代码,但认为我可能也只是给你一个我刚才从我的站点之一制成,因为它是等同于你的要求。我可以快速浏览告诉你,尽管那为什么你的数据库被清空上点击的原因是因为你在你的exec命令使用--add-drop-table删除数据库:

How to drop and re-populate mysql databases?

这是从一个提取的代码我的后端管理页面网站可以在需要时通过浏览器进行随机MySQL转储和备份。这非常简单,但极其有效,如果妥善安全。该表单使用单选按钮进行下载或备份,然后从cmdline执行本地mysqldump。备份将通过测试以确定文件是否已实际备份,并且下载将使用来自PHP站点here的示例下载几乎放在一起的文件,如果成功则输出。我形这一点,所以你可以把它添加到自己的项目

<?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> 
+0

嗨.. @ kitson88 ...同样的问题是相同的..我可以下载和采取备份,并成功的味精也得到显示。但文件是空的..我使用wamp server..thus我改变了路径$ path&$ backup ..你能帮忙吗?? –

+0

@DhruviMistry道歉,我刚刚更新了代码,所以它工作,基本上我忘了更新内容长度和'readfile()'(见注释)的变量,所以它现在工作完美。让我知道你是否还有其他问题。 – Kitson88

+0

否..存在问题是一样的..那就是这里.. –