/ / php mysqli prüft, ob ein Ergebnis existiert [closed] - php, mysqli

php mysqli prüft, ob ein Ergebnis existiert [closed] - php, mysqli

Ich habe einen Code, um zu überprüfen, ob Benutzerdaten bereits in mysql von mysqli vorhanden sind:

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

Wenn es funktioniert, wenn die Benutzerdaten bereits vorhanden sind. Wenn jedoch keine Benutzerdaten vorhanden sind, wird die else funktioniert nicht! Warum?

Antworten:

5 für die Antwort № 1

Der Grund dafür ist, dass Ihre if -Anweisung true zurückgibt. Daher führt sie den darin enthaltenen Code aus. $stmt->num_rows kann zurückkehren true, false oder ein intAuch wenn keine Zeilen betroffen sind, gibt es dennoch einen gültigen Wert zurück

0 ist ein gültiger Wert. Die if-Anweisung überspringt diesen Teil des Codes nur, wenn die Logik den Wert false ergibt. Wenn Sie den Code folgendermaßen ändern, wird das Problem behoben.

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

1 für die Antwort № 2

Dies ist so, weil Sie überprüfen num_rows wie es zurückkehren würdefalse wenn keine Übereinstimmungen gefunden werden Es kehrt stattdessen zurück 0 Falls kein Eintrag gefunden wird, schlage ich vor, zu überprüfen, ob num_rows ist > 0

if($stmt->num_rows > 0){