2013-05-19 120 views
0

我有一個代碼來檢查用戶數據在mysql中已經存在的mysqli的是這樣的:PHP的mysqli檢查是否有任何結果存在

$SQL = "SELECT users.email,users.handle,userprofile.mobile FROM users,userprofile  
     WHERE users.email =? OR users.handle =? OR userprofile.mobile=?"; 
if ($stmt = $mysqli->prepare($SQL)) { 
$stmt->bind_param("sss", $email,$username,$mobile); 
$stmt->execute(); 
if($stmt->num_rows){ 
$result = $stmt->get_result(); 
$row = $result->fetch_array(MYSQLI_NUM); 
    if($row[0] ==$email){echo 'email exist';} 
    if($row[1] ==$username){echo 'username exist';} 
    if($row[2] ==$mobile){echo 'mobile exist';} 
} 
else{ 
echo 'OK'; 
} 

如果在用戶數據已經存在的作品。 但如果用戶數據不存在,else不起作用! 爲什麼?

+1

'$ stmt-> num_rows'可能返回0,這是一個有效的值。你可以試試'if($ stmt-> num_rows> 0)' –

+0

哦,是的。謝謝。我剛搬到mysqli,不知道這些像問題。你可以回答這個帖子:) –

+0

沒問題,很高興我可以幫忙! –

回答

5

這是發生是因爲你的if語句返回true,因此在它執行的代碼的原因。 $stmt->num_rows可以返回truefalseint,所以即使沒有行受到了影響,它仍然是返回一個有效值

0是一個有效的值,if語句只跳過代碼的一部分,如果邏輯返回false,因此將代碼更改爲以下代碼將解決問題。

if($stmt->num_rows > 0) { 
    // your code here 
} 
1

這是因爲您正在檢查num_rows,因爲如果找不到匹配項,它將返回false。相反,它返回0的情況下,沒有條目匹配,所以我寧願建議,以檢查是否NUM_ROWS是> 0

if($stmt->num_rows > 0){ 
+0

非常感謝。那是我的錯誤 –

+0

是的,我總是upvoting並接受有用的答案。作爲你的回答:) –

相關問題