php mysqli prüfen, ob ein Ergebnis vorhanden ist
Ich habe einen code um zu überprüfen, Benutzer-Daten, die bereits existieren in mysql durch mysqli wie diese :
$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 funktioniert, wenn der Benutzer Daten, die bereits vorhanden sind.
aber wenn der Benutzer die Daten nicht gibt , die else
funktioniert nicht!
warum?
$stmt->num_rows
vielleicht kann die Rückgabe 0 ist ein Gültiger Wert. Sie könnten versuchenif($stmt->num_rows > 0)
- Oh ja. danke. Ich habe gerade nach mysqli und nicht wissen, wie diese Probleme.Sie können die Antwort der post 🙂
- Kein problem, froh, dass ich helfen konnte!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Grund dies geschieht, weil deine if-Anweisung ist die Rückgabe true, daher es führt den code innerhalb es.
$stmt->num_rows
zurückkehren könnentrue
,false
oder eineint
ist, also auch wenn keine Zeilen betroffen sind, ist es immer noch die Rücksendung einen gültigen Wert0 ist ein Gültiger Wert, der if-Anweisung überspringen Sie diesen Teil des Codes, wenn die Logik gibt false zurück, so ändern Sie Ihren code wie folgt um das Problem zu beheben.
Dies ist, weil Sie die Prüfung
num_rows
als würde es wiederfalse
wenn keine übereinstimmungen gefunden werden. Stattdessen gibt0
Fall, dass kein Eintrag übereinstimmt, so würde ich eher vorschlagen, zu prüfen, ob num_rows ist> 0