2013-10-02 30 views
1

我正在嘗試檢查一個值(email),以確定它是否已經存在於db中。這應該使用準備好的語句來完成。這樣做的最好方法是什麼?我的解決方案是這樣的(這是錯誤的):PHP準備好的語句 - 檢查一個值是否已經存在

$mysqli = connectToDB(); 
$getEmail = $mysqli->prepare('SELECT * FROM users WHERE email=?') or die('Couldn\'t check the email'); 
$getEmail->bind_param('s', $email); 
$getEmail->execute(); 
$countRows = $getEmail->num_rows; 
print $countRows; 

它總是打印出0,即使電子郵件已存在數據庫。

+0

你肯定在數據庫中的電子郵件中存在完全相同的大/小寫?嘗試使用不區分大小寫的比較:'WHERE lcase(email)= lcase(?)' –

+0

是的,我確信這兩個都是小寫。儘管我嘗試瞭解決方案。它沒有工作:( – Langkiller

回答

2

看來你有關於無緩衝結果的問題。您應該使用store_result:

$getEmail->execute(); 
$getEmail->store_result(); 
$countRows = $getEmail->num_rows; 
+0

謝謝,這工作完美。嗯,我不知道你是哪一個第一個答案..是否有關係,我接受哪個答案? – Langkiller

4

你需要調用$getEmail->store_result();

$mysqli = connectToDB(); 
$getEmail = $mysqli->prepare('SELECT * FROM users WHERE email=?') or die('Couldn\'t check the email'); 
$getEmail->bind_param('s', $email); 
$getEmail->execute(); 
$getEmail->store_result(); 
$countRows = $getEmail->num_rows; 
print $countRows; 
+0

謝謝,這工作完美。嗯,我不知道你們中的哪一個是第一個答案..是否有關係我接受哪個答案? – Langkiller

+0

接受Royal的回答:) –

相關問題