2011-11-09 71 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