我试图通过php获取数据库的mysqldump,我只能通过这种方式通过命令行进行数据库转储。
d:
cd "d:\wamp\bin\mysql\mysql5.5.24\bin"
mysqldump.exe
mysqldump --user=user --password=password --host=localhost db_name > "D:\dump\test.sql"
当尝试以这种方式从php执行此命令时,我得到一个空的转储文件。
$cmd = 'd: cd "d:/wamp/bin/mysql/mysql5.5.24/bin"mysqldump.exe>mysqldump --user=user --password=password --host=localhost db_name > "D:\dump\test.sql"';
exec($cmd);
或者这样
$cmd = 'd:/wamp/bin/mysql/mysql5.5.24/bin>mysqldump.exe>mysqldump --user=user --password=password --host=localhost db_name > D:\dump\test.sql';
exec($cmd);
或者这样
$cmd = 'd:/wamp/bin/mysql/mysql5.5.24/bin>mysqldump --user=user --password=password --host=localhost db_name > D:\dump\test.sql';
exec($cmd);
我只获得空转储文件。 我在这里经历了很多问题,例如this和this等等,但这些解决方案都不适用于我。
请参阅并建议任何可行的方法。
感谢。
答案 0 :(得分:5)
您似乎使用Windows,创建多命令行的方法是使用'&'运算符(more info)
示例:
$cmd = 'd: & cd "d:/wamp/bin/mysql/mysql5.5.24/bin" & mysqldump.exe --user=user --password=password --host=localhost db_name > "D:\dump\test.sql"';
exec($cmd);
另外,请仔细检查您的路径,因为您使用的是d:/wamp/...
及更高版本D:\dump\test.sql
,您的命令似乎使用斜杠和反斜杠,只有\
才有效。
最后,您可以使用exec的第二个参数调试命令:
$output = array();
exec($cmd, $output);
var_dump($output);