Ich versuche zu bestimmen, ob eine E-Mail bereits in meiner Datenbank ist oder nicht. Dazu schreibe ich dieses Stück Code:MySQL - Wählen Sie die Anzahl gibt zurück True
$query_checkmail = "SELECT COUNT(*) FROM user WHERE email = ?;";
if($stmt = mysqli_prepare($connection, $query_checkmail))
{
mysqli_stmt_bind_param($stmt, "s", $_POST["email"]);
$result = mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
}
echo "<pre>";
var_dump($result, mysqli_fetch_all($result));
echo "</pre>";
Da ich die Abfrage erwarten 0 zurück, weil die E-Mail nicht in der Datenbank enthalten sein sollte, der Ausgang ist dies (von var_dump
):
bool(true)
NULL
Ich verstehe nicht, warum ich kein mysqli-Ergebnisobjekt mit dem Wert 0 bekomme, sondern stattdessen den booleschen Wert true, der immer eine PHP-Warnung in den Protokollen auslöst, wenn ich es überprüfen will.
Ich hatte eine normale SELECT id FROM user WHERE email = ?;";
vor und bekam das gleiche Ergebnis. Ich dachte, mit COUNT könnte ich das verhindern, aber mein Versuch ist offensichtlich gescheitert.
Ich fand auch diese Stackoverflow Link aber leider half es mir nicht, mein Problem zu lösen zu wissen, ob der Wert bereits existiert oder nicht.
Jede Hilfe wird sehr geschätzt. Wenn diese Information nicht genug ist, werde ich die fehlenden Bits sofort zur Verfügung stellen.
Nur aus Neugier, was würden Sie tun, nachdem Sie festgestellt hatten, ob die E-Mail existiert oder nicht? – Strawberry
Dies ist der Prozess zum Hinzufügen eines neuen Benutzers. Ich darf keinen Benutzer mit dieser spezifischen E-Mail-Adresse haben, da es eindeutig sein muss, da es Teil der Login-Daten ist. Daher muss ich prüfen, ob es bereits einen Benutzer mit dieser E-Mail-Adresse gibt. Wenn ja, gebe ich einen Fehler zurück, wenn nicht, kann ich weitermachen. Ich bekomme "TRUE" als Ergebnis, auch wenn es niemanden mit dieser Mailadresse und nicht "0" gibt, den ich brauche. – JRsz
Erstelle einfach einen UNIQUE Schlüssel und reiche die Email ein. Das Ergebnis der Einfügung wird Ihnen sagen, ob die E-Mail existierte oder nicht – Strawberry