我正在尝试使用按钮创建一个页面,点击后会下载名为sampledb
的数据库。
这是我的backup.php
<?php
ob_start();
$username = "root";
$password = "";
$hostname = "localhost";
$dbname = "sampledb";
$command = "C:\\wamp\\bin\\mysql\\mysql5.5.24\\bin\\mysqldump --add-drop-table --host=" . $hostname . "--user=". $username ." --password=". $password." ".$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=sqlfile.sql');
readfile('sqlfile.sql');
flush();
echo $dump;
exit();
?>
出口成功。但是,当我在下载文件夹中检查下载的文件(sqlfile.sql)时,其文件大小仅为2kB。我尝试使用phpMyAdmin导出sampledb
,发现实际文件大小为9kB。
此外,当我尝试通过phpMyAdmin导入sqlfile.sql
时,收到错误消息。它说Warning: readfile(sqlfile.sql)
。
我的导出代码有问题。有什么建议吗?
更新20131205
我尝试将> sqlfile.sql
附加到我的代码的这一部分。
$command = "C:\\wamp\\bin\\mysql\\mysql5.5.24\\bin\\mysqldump. --add-drop-table --host=" . $hostname . "--user=". $username ." --password=". $password." ".$dbname;
文件大小仍然不正确。我无法将下载的文件上传到phpMyAdmin。
END UPDATE
答案 0 :(得分:0)
mysqldump
转储到文件中,否则只会将结果作为文本返回。
通常这是通过重定向到文件来完成的:
mysqldump --... > dump.sql