希望有人能夠幫助我,因爲我整夜都在試圖解決這個小問題。PDO沒有插入到數據庫中
我想插入數據到數據庫使用PDO(我承認,不是最瞭解)。我正在使用過去多次使用過的聲明,但由於某種原因,這次無法使用。聲明如下:
$userID = "Johnny5";
$sql = "INSERT INTO user_info(user_id) VALUES(:user-id)";
if($stmt = $this->_db->prepare($sql))
{
$stmt->bindParam(":user-id", $userID, PDO::PARAM_STR);
$stmt->execute();
$stmt->closeCursor();
return TRUE;
} else {
return FALSE;
}
但不幸的是這總是返回TRUE
而沒有輸入任何內容到我的數據庫。我嘗試了所有我能想到的聲明的組合變化,但我仍然處於虧損狀態。
我希望有人可以指出我犯的一個非常簡單的錯誤。
此外,在參數:user-id
的$sql
字符串周圍放置單引號是我可以獲得任何內容出現在數據庫中的唯一方式,但顯然不會將任何實際數據輸入到數據庫中。
編輯 我也改變了PDO參數類型從PDO::PARAM_STR
到PDO::PARAM_INT
但仍然沒有運氣。
經過進一步調查,正在返回FALSE
。
解決方案 感謝大家的指導。 @Nabeel說在PDO參數中不使用佔位符是正確的。
PDOStatement-> bindParam返回TRUE或FALSE的成功失敗。 PDOStatement-> execute在成功時返回TRUE,在失敗時返回FALSE。您可以通過檢查返回值來找出哪個命令失敗。 – hakre 2011-04-10 11:09:43
您是否嘗試過放置:error_reporting(E_ALL); ini_set('display_errors',1);在腳本的頂部? – teuneboon 2011-04-10 11:10:01
@hakre我已經確定execute()的失敗似乎是 – ServAce85 2011-04-10 11:19:25