2013-01-19 27 views
0

我對PDO稍微有點新,我知道如何選擇完美的數據,我的問題是插入。切換到PDO,提交時出錯

$Finalize = $pdo->prepare("INSERT INTO `users` VALUES(`id`,:email,:hashedpassword,:firstname,:lastname,:gender,:bdaymonth,:bdayday,:bdayyear,'".time()."',:username)"); 
$Finalize->bindValue(':email', $email, PDO::PARAM_STR); 
$Finalize->bindValue(':hashedpassword', $hashedPassword, PDO::PARAM_STR); 
$Finalize->bindValue(':firstname', $first_name, PDO::PARAM_STR); 
$Finalize->bindValue(':lastname', $last_name, PDO::PARAM_STR); 
$Finalize->bindValue(':gender', $gender, PDO::PARAM_STR); 
$Finalize->bindValue(':bdaymonth', $bday_month, PDO::PARAM_STR); 
$Finalize->bindValue(':bdayday', $bday_day, PDO::PARAM_STR); 
$Finalize->bindValue(':bdayyear', $bday_year, PDO::PARAM_STR); 
$Finalize->bindValue(':bdayday', $username, PDO::PARAM_STR); 
if($Finalize->execute() == false){ 
    echo '6'; 
    die;  
} 

我在做什麼錯?這個腳本只是使用mysql_query並且工作正常,所以我不知道我做錯了什麼。

+1

你爲什麼要插入'\'id \''? – eggyal

+0

自動遞增的ID字段。這是我一直使用mysql_ – Jake

+2

如果你插入一個像id這樣的命名列,你必須爲它提供一個值(即使它是一個空值)....你必須用mysql_ *以及 –

回答

1

你兩次綁定值到':bdayday'參數,任何價值也沒有約束力的':username'參數:

$Finalize->bindValue(':bdayday', $bday_day, PDO::PARAM_STR); 
// [ deletia ] 
$Finalize->bindValue(':bdayday', $username, PDO::PARAM_STR); 

默認情況下,PDO不輸出警告或發生錯誤時拋出異常:必須而是手動檢查每個函數的返回值,以查看它是否成功並正確處理錯誤。

但是,您可以,modify this default behaviour

+0

哇,我覺得自己像一個白癡。打字後我開始懶惰,所以我開始複製和粘貼。 -_-我正在處理的服務器無論如何都有錯誤,對我來說不是一件好事。但我會與服務器所有者,我的朋友談談,讓他爲我啓用PDO錯誤。真的需要他們,所以我可以習慣pdo。 – Jake

+0

@Jake:如果你關注這個鏈接,你會發現你可以在你自己的代碼中做這件事。 – eggyal

+0

啊。好吧,認爲它與php.ini有關。我真的處於疲倦/懶惰/強調的情緒。真的不能這樣,尤其是在截止日期之前。大聲笑但謝謝你。當它讓我時,我會接受答案。 – Jake