gpt4 book ai didi

php - 如何通过php选择的表备份数据库mysql表

转载 作者:行者123 更新时间:2023-11-29 13:50:16 28 4
gpt4 key购买 nike

我想使用 mysqldump 从数据库 mysql 中逐表备份,,,,

我的表格使用复选框显示在列表上。

如果表列表全部选中,则我的所有表备份

如果表一、二、三等的列表检查了我的表检查的备份

这是我的代码:

<?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 every 循环中,您没有在末尾添加空格。另外,不需要使用look来连接字符串,你可以use PHP's built in implode function .

其次,您应该在开始回显要备份的所有表名称之前添加 --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';

关于php - 如何通过php选择的表备份数据库mysql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16793344/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com