/ / php mysqli sprawdź, czy istnieje jakiś wynik [zamknięty] - php, mysqli

php mysqli sprawdź, czy jakikolwiek wynik istnieje [zamknięty] - php, mysqli

Mam kod, aby sprawdzić, czy dane użytkownika już istnieją w mysql przez mysqli w następujący sposób:

    $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";
}

jeśli działa, gdy dane użytkownika już istnieją. ale jeśli dane użytkownika nie istnieją, else nie działa! dlaczego?

Odpowiedzi:

5 dla odpowiedzi № 1

Dzieje się tak, ponieważ twoja instrukcja if zwraca true, dlatego wykonuje w niej kod. $stmt->num_rows może wrócić true, false lub int, więc nawet jeśli nie zostały naruszone żadne wiersze, nadal zwraca prawidłową wartość

0 jest prawidłową wartością, instrukcja if pominie tę część kodu tylko wtedy, gdy logika zwróci false, więc zmiana kodu na następujący spowoduje rozwiązanie problemu.

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

1 dla odpowiedzi nr 2

To dlatego, że sprawdzasz num_rows jak by wróciłfalse jeśli nie znaleziono żadnych dopasowań. Zamiast tego powraca 0 na wypadek, gdyby żaden wpis nie został dopasowany, wolałbym raczej sprawdzić, czy num_rows jest > 0

if($stmt->num_rows > 0){