關於爲什麼以下內容會拋出參數錯誤的任何想法。我已經看過所有其他答案,但我正在以與解決方案相同的方式處理這個問題,但這似乎仍然不起作用。將應用程序從adodb切換到pdo。MySql find_in_set()與PHP PDO不搭配很好
$possible_keys = implode(",", $possible_keys_array);
SQL片斷
WHERE
FIND_IN_SET(table.key,:possible_keys)
$STH = $DBH->prepare($sql);
$STH->execute(array($possible_keys));
$STH->setFetchMode(PDO::FETCH_ASSOC);
我只把代碼的快照。但是,如果使用possible_keys變量的實際文本替換:possible_keys佔位符,它一切正常。我在撓撓我的腦袋,爲什麼這不起作用,因爲無論如何變量只是一個字符串。它一直拋出以下錯誤:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
p.s.我只包含了被證明是問題的子句,而不是整個查詢。我知道其餘的都很好。
偉大的我現在會嘗試一下現在這一分鐘。我錯過了那一個。然而,它是如何爲所有其他查詢工作的。我在整個過程中都使用了指定的佔位符,但是使用了具有相同順序值的普通數組來將數據傳遞給stmt。它似乎在所有其他查詢中工作正常,爲什麼會這樣?我很感謝這些信息。 – jiraiya 2013-02-18 15:14:12
它確實已經修復它,謝謝100萬。有趣的是,正如我上面所說,它適用於其餘部分,但不適用於find_in_set(),我只能假設它在所有情況下都不能安全使用非關聯數組,因此我將使它們全部關聯。再次感謝。 – jiraiya 2013-02-18 15:16:35