2015-10-15 91 views
2

這一切都讓我堅持用這個簡單的預處理語句日:PHP-PDO_PGSQL - SQLSTATE [HY093]:無效的參數號

// $conn it's my PDO Object 
// and $intervention my params'array 

$s = $conn->prepare("INSERT INTO intervention(firm_id,category,subject,amount,start_date,end_date) VALUES(:firm_id,':category',':subject',:amount,':start_date',':end_date')"); 
$result = $s->execute(array(
    'firm_id' => $firm_id , 
    'category' => $intervention["category"] , 
    'subject' => $intervention["subject"] , 
    'amount'=> $intervention["amount"] , 
    'start_date'=> $intervention["start_date"], 
    'end_date'=>$intervention["end_date"] 
)); 

執行所會給我:

警告:PDOStatement :: execute():SQLSTATE [HY093]:無效的參數編號:::類別

有人可以幫我解開d這個簡單的代碼有什麼問題?

回答

2

在查詢的這個部分: VALUES(:firm_id,':category',

:category被當作一個文本字符串,而不是作爲一個參數的名稱,因爲它封閉的報價。

應該有周圍的參數名稱,不包括引號中:

...VALUES(:firm_id, :category,...

沒有爲查詢的其餘部分的其他非數字參數同樣的錯誤。

+0

Ops ...非常感謝的人! –

1

參數名稱不應該有引號。準備好的聲明將正確地進行替換。請注意您在查詢中寫入的參數數量,以及您在執行方法上綁定的內容。

+0

這讓我很尷尬,但是確實如此。也謝謝你! –