2012-08-08 35 views
3

編輯:事實證明,我一直在吠叫錯了樹,所以 說話。我編輯了這個問題,至少可以幫助其他 誰出錯。定製PDO類錯誤

所有這些誰在嘗試執行準備的PDO查詢時出現以下錯誤:

警告:PDOStatement對象::執行()[pdostatement.execute]: SQLSTATE [HY093]:無效參數編號:參數未定義 on line 26

請參閱下面的答案。

+4

爲什麼人們似乎覺得OO DB驅動程序需要包裝類?他們已經*是班級。如果你必須改變他們的工作方式,*擴展他們而不是包裝他們的東西。哪一行是第26行? – DaveRandom 2012-08-08 15:47:32

+0

另請不要忽略大括號。它只會傷害可讀性。 – PeeHaa 2012-08-08 15:49:10

+0

@PeeHaa無論哪種方式。我從來沒有在傳遞給'execute()'的鍵中使用前導':'s。 – DaveRandom 2012-08-08 15:49:31

回答

1

這意味着您在$query->execture($array)中傳遞的查詢中的數組值超過:values。如果您收到類似但措辭不同的錯誤,則意味着您在查詢中的查詢數量多於您在數組中的:values。例如:

$array = array(
    'username' => 'Bob', 
    'id' => 42, 
); 

//... 

$query = "SELECT * FROM `users` WHERE `id`=:id"; 

//... 

$data->execute($array); 

這會產生錯誤,因爲雖然您傳遞「用戶名」,但它在查詢中從不使用。希望這可以幫助別人!

1

糾正我,如果我錯了,但你不應該使用以下語法您的參數數組:

array(':id' => 1) 

注意,在你原來的職位省略冒號。

查看PDO docs的例子。

+0

其實它是可選的。 – 2012-08-11 13:03:36