2011-11-09 52 views
0

我有下面的变量语法错误问题,因为PHP变量的语法错误与一个MySQL查询:PHP/MySQL的通过

$uploadQuery = " 
LOAD DATA LOCAL INFILE '".$docRoot."/../../includes/dbUploads/".$fileToUpload."' 
INTO TABLE `promotions` 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\r\n' 
"; 

我知道它有什么做用的转义做LOAD DATA ...行中的'字符。但是当涉及到究竟是什么问题时,或者如何以正确的方式对此查询进行重新说明时,我很难过。

所以,我的问题是这样的:

我如何改写以正确的方式所陈述的变量,有关于它没有语法错误。

如果有人对此有任何建议或意见,将不胜感激。

谢谢!

+0

你的错误究竟是什么?另外,你是否尝试echo $ uploadQuery而不是从php运行它,然后手动运行它并查看如何修复? – bpgergo

回答

3

缺少转义字符,这是正确的字符串:

$uploadQuery = " 
LOAD DATA LOCAL INFILE '".$docRoot."/../../includes/dbUploads/".$fileToUpload."' 
INTO TABLE `promotions` 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '\"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\\r\\n' 
"; 

注意5日线的额外\。它将"视为字符串终结符。另外一个问题(不会导致语法错误)在第7行,您需要跳过反斜杠。

P.S.标记分析器甚至捡起它:P

编辑:您可能还需要将第7行更改为ESCAPED BY '\\\\',因为在PHP解析它之后,这会减少为ESCAPED BY '\\'

+0

非常感谢!我想我毕竟没有“知道”......我的问题的根源:) –

+1

顺便说一句,如果你使用双引号“'',你不必将变量连接到一个字符串,例如,如果你说'echo'$ foo“'它就会像'echo $ foo'一样工作。注意,在某些情况下,你需要将变量包装在'{'和'}'中以便它可以成为与其他字符串的文本不同 – imkingdavid

+1

@BlackberryFan查看我的编辑:我错过了一些东西 – jli