所以我寫了一個腳本來在表中插入一個電子郵件地址,但我想檢查該地址是否已經存在。於是,我開始用事先準備好的聲明:使用MySQLi準備語句檢查現有記錄
$statement = $db->prepare("SELECT * FROM `signups` WHERE `signups_email`= ? ");
$statement->bind_param('s',$email);
$statement->execute();
if($statement->num_rows < 1){
$statement->close(); //Free up the SQL result
//do the inserting code
} else {
echo "Email already exists";
}
麻煩的是,($statement->num_rows < 1)
似乎總是返回true,即使我知道有一個數據庫中的電子郵件。即它不知道該地址已經在數據庫中。
我的連接等是優良的//do the inserting code
位工作正常。
或者,如果你只需要檢查的是一列,你可以在該列使用'UNIQUE'指數,並避免不必要的'SELECT'查詢。 – pilsetnieks 2013-04-22 19:05:28
但是,當我嘗試插入一個已經存在的條目時,會不會引發錯誤?我的方法使得前端的錯誤處理非常簡單。 – harryg 2013-04-22 19:10:05
你可以做'INSERT IGNORE',即使已經存在這樣的條目也不會引發錯誤,然後檢查插入的行數。 – pilsetnieks 2013-04-22 19:12:37