Tach!
mysql_connect("localhost", "root", "****");
mysql_select_db("*****");
$res = mysql_query("select * from bookofweek where index == 0");
$num = mysql_num_rows($res);
echo "$num Datensätze gefunden";
>
> Das Problem ist, dass bei der Ausgabe nur "Datensätze gefunden" steht, aber keine Zahl. Wenn ich den Bereich `where index == 0`{:.language-sql} weglasse, wird die Anzahl aller Datensätze ausgegeben, was ist an meinem Code falsch?
Die fehlende Fehlerbehandlung. Wenn du von den verwendeten PHP-Funktionen die Funktionsergebnisse auswerten würdest, bekämest du in $res ein false, was signalisert, dass MySQL igendwas nicht abarbeiten konnte. Was das genau ist, verrät dir dann mysql\_error(). Zudem scheint bei dir noch das error\_reporting nicht auf E\_ALL zu stehen und/oder display\_errors ausgeschaltet zu sein. Diese beiden Einstellungen braucht man zum Entwickeln und Fehlersuchen. Damit hätte dir mysql\_num\_rows() einen Folgefehler angezeigt, weil das false in $res keine Result-Kennung ist. In $num steht nun ebenfalls ein false, das im String-Kontext zu einem Leerstring wird.
Und wenn du nun ein Script geschrieben hast, das nicht nur von schönem Wetter ausgeht sondern auch Fehlerzustände brücksichtigen kann, dann wirst du einen Syntaxfehler von MySQL zu Gesicht bekommen, der dir sagen wird, dass ein bestimmtes Schlüsselwort an der Stelle nicht erwartet wird. Wenn man Keywords als Spaltennamen verwendet, muss dieser besonders quotiert werden.
dedlfix.