Php 将MySQL作为CSV下载时出现的问题

Php 将MySQL作为CSV下载时出现的问题,php,mysql,csv,download,Php,Mysql,Csv,Download,我无法将mysql数据库输出到csv文件并下载它。下面的代码在下面的第三行生成错误“意外的T\u常数\u封装的\u字符串”。我试过在第三行和第四行使用分号,而不使用分号 $FileName = "/googleresearch" . abs(rand(0,1000000000000)) . ".csv"; $query = "SELECT * FROM happyturtle INTO OUTFILE $FileName; FIELDS TERMINATED BY ',' OPTIONA

我无法将mysql数据库输出到csv文件并下载它。下面的代码在下面的第三行生成错误
“意外的T\u常数\u封装的\u字符串”
。我试过在第三行和第四行使用分号,而不使用分号

$FileName = "/googleresearch" .  abs(rand(0,1000000000000))  .  ".csv";

$query = "SELECT * FROM happyturtle INTO OUTFILE $FileName;
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';
LINES TERMINATED BY '\n'";

$result = mysql_query($query) or die(mysql_error());

exit;

您需要在第四行转义您的
,如下所示:

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';

您需要在第四行转义您的
,如下所示:

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';

将输出文件名基于随机数并不完全可靠。概率很低,但如果发生冲突,MySQL将不会覆盖已经存在的文件。相反,您应该将文件名基于当前时间戳,在PHP中,可以使用
time()
将其作为常规整数。当然,如果每秒多次运行此查询,仍然会有覆盖问题。基于随机数的输出文件名并不完全可靠。概率很低,但如果发生冲突,MySQL将不会覆盖已经存在的文件。相反,您应该将文件名基于当前时间戳,在PHP中,可以使用
time()
将其作为常规整数。当然,如果每秒多次运行此查询,仍然会有覆盖问题。