【发布时间】:2020-10-18 21:52:16
【问题描述】:
我花了几个小时在这个网站上阅读可能超过 10 个不同的问答,并多次查看我的以下查询,但仍然找不到问题所在。这是我的PHP 代码中的查询定义行:
$q="LOAD DATA INFILE '$filename'
IGNORE INTO TABLE `temp_data_1`
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\'
LINES TERMINATED BY '\r\n' IGNORE 1
LINES (`field_1`, `field_2`, `field_3`, `field_4`, `field_5`,
`field_6`, `field_8`, `field_9`)
SET `field_7` = SUBSTRING_INDEX(`field_6`, '.',-1)";
$filename 在上传CSV 文件后设置。非常相似的代码在phpMyAdmin 中工作,但我无法让它在我的PHP 代码中工作。我不断收到此错误:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '' IGNORE 1 LINES (
field_1,field_2,field_3,field_4,field_5,field_6, ' 行附近使用的正确语法2
我怀疑它与 LINES TERMINATED BY '\r\n' 相关,但我认为它没有任何问题,因为完全相同的行终止定义在代码的其他部分起作用。
感谢您的帮助。
【问题讨论】:
-
你还需要在 PHP 中的字符串中进行转义,否则转义序列会被插入那里。
-
您的意思是将
'\r\n'转为'\\r\\n'? -
是的。而对于另一个 \ 也是。
-
我会测试,但其他人不是已经逃脱了吗?
-
最后一个只有
'\\r\\n'。
标签: php mysql mysql-error-1064 load-data-infile