Wo liegt in PHP hier der Fehler?

... komplette Frage anzeigen

4 Antworten

Er geht in den else-Zweig, weil der Query funktioniert. Ob da nun ein sinnvoller Wert gefunden wird oder nicht wird da nicht geprüft. Der Query ist nicht fehlerhaft und daher ist $queryname auch gesetzt.

Antwort bewerten Vielen Dank für Deine Bewertung

der Fehler kommt bei

$querymail = mysqli_query($dbconnect, "SELECT `email` FROM `newchat` WHERE `email` = '$regmail'");
        if (!$querymail) {

gibt eigentlich nur die möglichkeit das der query als true zurück kommt .

ergo könnte es sein das der select mit leerer $regmail etwas findet .

ich finde diese logik auch nicht schön , den es sollte eher geprüft werden ob eine ergebniszeile zurück kommt und nicht ob ein fehler vorliegt . den auch ein select auf 0 zeilen ist ja durchaus ein Ergebnis was true ist .

mysqli_num_rows($result) > 0 


find ich praktischer

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RaceShafter
22.04.2016, 13:52

Also eher so:

if (!(mysqli_num_rows($queryname)) > 0 ){

//Was passiert, wenn Daten noch frei sind

}else{

//Was passiert, wenn Daten schon vergeben sind

}

Ist das so eher richtig?

1

1.  if(isset($sent)){
$sent  ist nicht definiert, also wird immer der else zweig angestuert.

2. $querymail = mysqli_query
hast du falsch verstanden: es wird nicht zurückgemeldet ob er was gefunden hat, sondern ein gültiges objekt, welches die treffermenge representiert. nur wenn das sql-statement fehlerhaft ist (syntaxfehler oder tabelle oder spalte existiert nicht), wird ein boolean FALSE zurückgegeben.

$querymail kann auch eine leere menge zuückliefern. das merkst du dann beim mysqli_fetch: das gibt entweder ein array der columns oder FALSE zurück.


Antwort bewerten Vielen Dank für Deine Bewertung

Wenn ich das richtig sehe, geht er inden Zweig dann rein, wenn !$querymail gesetzt ist. Lass Dir  !$querymail doch mal ausgeben und schau, was da drin steht.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RaceShafter
22.04.2016, 13:42

Wenn ich es als Echo ausgeben möchte, dann steht da:
Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\Users\Tom\Documents\XAMPI\htdocs\register.php on line 49

Ich schaue kurz, was passiert, wenn ich row auslese..

0

Was möchtest Du wissen?