【发布时间】:2015-08-14 07:29:16
【问题描述】:
我在 PHP 中使用 exec 函数让 mysql 将查询的内容转储到 CSV 文件中。
这是我的代码:
$outfile = '/home/dotslash/file.csv';
$emails_table = 'all_emails';
$host = 'localhost';
$user = 'root';
$pass = 'root';
$dbname = 'test';
$query = "SELECT DISTINCT(emailid), COUNT(emailid), GROUP_CONCAT(DISTINCT offers) FROM '" . $emails_table . "' GROUP BY emailid INTO OUTFILE '" . $outfile . "' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';";
exec("mysql -h$host -u$user -p$pass $dbname -e '$query'");
我收到了这个错误:sh: 2: Syntax error: Unterminated quoted string
我知道当字符串从 PHP 传递到 bash 时,问题是转义,但我不知道我做错了什么。请帮忙!
【问题讨论】:
-
这是偶然的吗:'\n';";好像多了一个;
-
@VictorPerez 是什么让你这么认为?第一个分号用于 MySQL。第二个是 PHP 的。
-
与我的编码方式相比只是视觉上的。除了结束语句之外,我从未使用过这样的分号。你似乎有足够的声誉让我认为你知道你在做什么,所以我开始寻找可能的错字:-)
-
@VictorPerez LOL,我不知道“足够的声誉”是什么意思。我们都可能犯小错误并绊倒。 :)
-
你的问题肯定出在这部分:
ENCLOSED BY '\"'