Abfragen, ob ein Wert in der Datenbank vorhanden ist

Max2003

Neues Mitglied
Hallo ich will abfragen ob ein Wert in einer Datenbank vorhanden ist aber das was ich Online finde funktioniert nicht deswegen habe ich eine eigene Version versucht aber das ganze geht auch nicht zumindest wird mir immer die gleiche Nachricht ausgegeben egal ob der wert vorhanden ist oder nicht

PHP:
$sql = "SELECT * FROM test WHERE email='".$email."'";

$result = $conn->query($sql);

if($result == $email){     
echo "Wert ist Vorhanden"; 
 } else {     
 echo "Wert ist nicht Vorhanden"; 
 }
 
Zuletzt bearbeitet von einem Moderator:

JR Cologne

Administrator
Teammitglied
Erstmal vorweg: Lese dich bitte zeitnah mal zum Thema SQL Injections ein. Es handelt sich nämlich um eine große Sicherheitslücke, wenn du Usereingaben oder sonstige nicht hardcodierte Daten in eine SQL-Abfrage packst.

Zu deinem Problem:
Die Variable $result enthält nicht das, was du denkst.
Schaue dir mal die query-Methode von MySQLi (das verwendest du denke ich mal) näher an.
Der Rückgabewert ist nicht die E-Mail, sondern ein mysqli_result-Objekt.

Kleiner Tipp noch zur Fehlersuche:
Du kannst dir mittels der Funktion var_dump() Variablen, Ergebnisse von Ausdrücken, Rückgabewerte, usw. ausgeben lassen. Das hilft, wenn du nicht weißt, was vor sich geht, weil du bspw. noch nicht mit den Rückgabewerten einer Funktion vertraut bist.
 
Zuletzt bearbeitet:

dominik

Aktives Mitglied
Mit SELECT * selektierst du ja alle Spalten der Tabelle, also enthält $result nicht nur die E-Mail-Adresse, sondern eben alle Spalten von allen Zeilen, die die WHERE-Bedingung erfüllen.

Die einzelnen Zeilen - auch wenn es nur eine sein sollte - kannst du auslesen, indem du die Methode fetch_row() von $result in einer Schleife aufrufst. Bei jedem neuen Durchlauf der Schleife wird die nächste Zeile zurückgegeben:

PHP:
while ($row = $result->fetch_row()) {
    // ...
}

Die jeweilige Zeile wird in $row geschrieben. Die Schleife läuft so lange, bis ein fetch_row()-Aufruf keine Zeile mehr zurückliefert.

$row ist ein Array, das die einzelnen Spalten enthält. Wenn du beispielsweise die Tabellenspalten id, name, email abfrägst, kannst du mit $row[2] auf die E-Mail zugreifen.

PHP:
while ($row = $result->fetch_row()) {
    echo 'Aktuelle E-Mail: ' . $row[2];
}

Gegebenenfalls musst du den Array-Index natürlich anpassen. Ansonsten kann es auch Sinn machen, das Ergebnis mit LIMIT 1 auf einen Eintrag zu reduzieren. Da dich der Spalteninhalt in deinem Beispiel nicht reduziert, könntest du auch einfach SELECT COUNT(*) abfragen.
 
Oben Unten