[英]how to backup database mysql table by table selected with php
我想使用mysqldump從數據庫從mysql用php備份表,
我的表格使用復選框顯示在列表中。
如果表列表全部選中,則我所有表都備份
如果表一,二,三等的列表檢查了我的表檢查了備份
這是我的代碼:
<?php
include "config/conn.php";
echo "<h1>Database name: ".$db."</h1></br>";
echo "list of Tabel:";
$query = "SHOW TABLES";
$hasil = mysql_query($query);
echo "<form method='post' action='db/backupAction.php'>";
echo "<table>";
while ($data = mysql_fetch_row($hasil))
{
echo "<tr><td><input type='checkbox' name='tabel[]' value='".$data[0]."'></td><td>".$data[0]."</td></tr>";
}
echo "</table><br>";
echo "<input type='submit' name='submit' value='Backup Data' class='btn'>";
echo "</form>";
?>
這是我的backupAction.php文件
<?php
include "config/conn.php";
$tabel = $_POST['tabel'];
$listTabel = "";
foreach($tabel as $namatabel)
{
$listTabel = $namatabel ;
}
$command = "C:\xampp\Mysql\bin\mysqldump --user".$user." --password=".$pass." ".$db." ".$listTabel."\>".$db.".sql";
exec($command);
header("Content-Disposition: attachment; filename=".$db.".sql");
header("Content-type: application/download");
//$fp = fopen ($db.".sql", 'r');
//$content = fread($fp, filesize($db.".sql"));
//fclose($fp);
//echo $content;
//exit;
?>
我的結果文件.sql為空
為什么???
您的上述代碼有兩個問題。 首先,應確保您在mysqldump命令中將用戶分開。
mysqldump --user=".$user."
在創建listTabel字符串的for each循環中,沒有在末尾添加空格。 另外,不需要使用外觀來連接字符串,可以使用PHP內置的implode函數 。
其次,在開始回顯將要備份的所有表名之前,應添加--tables參數。
最后,在PHP中,“ \\”是一個特殊的轉義字符。 您要么需要使用兩個,要么將命令用單引號引起來。 您不需要轉義“>”字符。
本質上,該命令將如下所示:
$listTabel = '';
if (is_array($tabel))
$listTabel = implode(" ", $tabel);
$executable = 'C:\xampp\Mysql\bin\mysqldump ';
$command = $executable;
if (isset($user) && $user != '')
$command .= '--user='.$user.' ';
if (isset($pass) && $pass != '')
$command .= '--password='.$pass.' ';
$command .= $db
if (isset($listTabel) && $listTabel != '')
$command .=' --tables'.$listTabel;
$command .= ' > '.$db.'.sql';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.