/ / php mysqli skontrolovať, či existuje nejaký výsledok [closed] - php, mysqli

php mysqli skontrolovať, či existuje nejaký výsledok [uzavretý] - php, mysqli

Mám kód na kontrolu používateľských údajov, ktoré už v mysql existujú v mysqli takto:

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

ak funguje, keď už existujú užívateľské údaje. ale ak užívateľské dáta neexistujú, else nefunguje! Prečo?

odpovede:

5 pre odpoveď č. 1

Dôvod, prečo sa to deje, je preto, že váš príkaz if sa vracia pravdivo, preto v ňom vykoná kód. $stmt->num_rows môže sa vrátiť true, false alebo a int, takže aj keď neboli ovplyvnené žiadne riadky, stále vracia platnú hodnotu

0 je platná hodnota, príkaz if iba vynechá tú časť kódu, ak logika vráti hodnotu false, takže zmena kódu na nasledujúci problém problém vyrieši.

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

1 pre odpoveď č. 2

Je to preto, že kontrolujete num_rows ako by sa vrátilfalse ak sa nenájdu žiadne zhody. Namiesto toho sa vracia 0 v prípade, že nie je priradený žiadny záznam, tak by som radšej skontroloval, či je num_rows > 0

if($stmt->num_rows > 0){