mysqldump --fields-enclosed-by = \"如何在PHP

时间:2017-06-16 00:29:42

标签: php

我有这个代码不起作用:($ output = empty和$ result = 1 ......所以有些不对劲);

exec("(C:\wamp64\bin\mysql\mysql5.7.9\bin\mysqldump.exe -u$username -p$password --tab=$path_to_export --skip-add-drop-table --skip-triggers --fields-enclosed-by=\" --fields-terminated-by=, $db_name) 2>&1", $output, $result);

但是如果我删除这个参数 - fields-enclosed-by = \" 那么工作正常

由此我推断出引号是问题所在。知道如何正确地逃避它吗?

1 个答案:

答案 0 :(得分:0)

使用escapeshellarg来转义shell参数。此外,您应该转义路径名中的反斜杠,或使用正斜杠,因为其中一些将被解释为转义序列(\b是退格序列。)

exec("C:/wamp64/bin/mysql5.7.9/bin/mysqldump.exe -u$username -p" . escapeshellarg($password) . " --tab=$path_to_export --skip-add-drop-table --skip-triggers --fields-enclosed-by=" . escapeshellarg('"') . " --fields-terminated-by=, $db_name 2>&1", $output, $result);