2012-07-10 68 views
1

今天,我遇到了一個我從未見過的錯誤(在PDO中),但是當您考慮它時有點顯而易見。PDO無效的參數編號 - 註釋中的參數

我得到了以下錯誤: Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number:

我使用的查詢是類似以下內容:

SELECT 
    x 
FROM 
    y 
WHERE 
    -- CHECKING IF X = :Z -- 
    x = :y 
AND 
    1 = 2 

很顯然,我有更多的參數和更長的查詢。

爲什麼它會給我這個錯誤?

+0

我將結合[你幾乎相同的問題(http://stackoverflow.com/questions/11415355/pdo-invalid-parameter-number-mixed-named-and-positional-parameters-question/ )與這一個。請記住這一點,同樣的事情適用於'?'。 – Wiseguy 2012-07-10 14:36:13

+0

看到我對另一個問題的評論:他們導致了不同的錯誤,並以我的愚蠢觀點 - 單獨的問題來緩解搜索。 – Sherlock 2012-07-10 14:39:39

+0

這是爲什麼關閉?我自己回答了這個問題,這可能對未來的參考很重要... – Sherlock 2012-07-11 15:04:47

回答

3

解決方案很明顯:PDO忽視註釋,並試圖綁定不存在的變量':Z'。你不能在PDO的註釋中使用參數(除非你綁定了它們)。

There's a similar bug using question marks in comments.

+0

是的,聽起來合理,因爲PDO會查找佔位符,無論它是否包含在評論中。 – ninetwozero 2012-07-10 14:19:34

+1

等一下,你只是發佈自己的問題,並直接回答? – ninetwozero 2012-07-10 14:20:15

+1

是的,因爲這個知識是有用的。這將節省我半個小時尋找未綁定的參數。 – Sherlock 2012-07-10 14:20:50