Warum wird immer der if case ausgeführt, auch wenn die bedingungen eigentlich nicht erfüllt sind?

2 Antworten

Die query-Methode liefert bei Erfolg ein mysqli_result-Objekt zurück, andernfalls false.

Zuerst einmal müsstest du den letztgenannten Fall abfangen, denn auch mit den boolschen Werten kann PHP weiterarbeiten. So würdest du in diesem Beispiel:

$a = false;
$b = false;

if ($a >= $b) print "is true";

eine Ausgabe erhalten. Die boolschen Werte werden implizit in Ganzzahlen konvertiert (false = 0) und 0 >= 0 stellt eine wahre Aussage dar.

Im zweiten Schritt müsstest du den Datensatz aus dem Ergebnisobjekt herauslesen.

$result = // execute SQL query ...

if ($result) {
    $year = intval($result->fetch_column(0));
    /* ... */

Für Deine Auswertung reicht eine einzige SQL-Anweisung mit der Rückgabe des gewünschten Ergebnisses. Wenn was nicht stimmt musst Du debuggen.