2010-01-04 200 views
0

錯誤消息:SQL錯誤:SQL語法錯誤

SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND domain = 'ard.qc' AND snapshot_id = 2010 AND locale = 'en_US'' at line 1

SQL查詢:

SELECT 
    entity_id, 
    content_id 
FROM collateral_cms_mapping 
WHERE entity_id IN ({$entity_ids}) 
    AND domain = '{$this->getSite()->getInternalId()}' 
    AND snapshot_id = {$this->getSnapshotDao()->getCurrentSnapshot()} 
    AND locale = '{$locale}' 

實際SQL後的值被替換,字符串連接:

SELECT 
     entity_id, 
     content_id 
    FROM 
     collateral_cms_mapping 
    WHERE 
    entity_id 
    IN 
    () 
    AND 
     domain = 'ard.qc' 
    AND 
     snapshot_id = 2009 
    AND 
     locale = 'en_US' 

有什麼建議嗎?

+0

提供變量值的包裝語言是什麼?你可以發佈整個查詢變量解析嗎? – 2010-01-04 20:30:59

+2

建議將提供您的字符串連接/變量替換產生的實際語句。 – sberry 2010-01-04 20:31:03

+1

我建議打印您正在運行的實際SQL查詢,而不是生成它的代碼。查看導致問題的特定查詢時,問題會更加明顯。 – Welbog 2010-01-04 20:31:28

回答

4

$entity_ids的值是多少?可能它是空的,所以你的查詢包含IN(),這是無效的。

1

您不必拼接字符串。

看起來準備好的查詢在IN ({$entity_ids})的某個地方有問題。

回顯查詢字符串以檢查您的IN語句。

0

絕對看看IN聲明。雖然我不熟悉MySQL,但我不認爲DB2或Oracle允許使用空的IN()子句(儘管我不會發誓)。