Bademeister: scheitere an der benutzung von 'mysql_num_rows'

Beitrag lesen

Das Problem ist die Zeile

$result = (mysql_query($query) or die(mysql_error()));

das ist etwas zu gewagt. Der Operator "or" gibt Dir einen boolschen Wert zurück. Eine Anweisung der Form

$result = ($a or $b);

setzt $result auf TRUE (und nicht auf $a), wenn $a != 0 ist. Und TRUE ist sicher keine gültige mysql-Ressource.

Etwas merkwürdig ist die Konstruktion noch aus einem anderen Grund: die Funktion die() hat keinen Rückgabewert und ist somit kein Ausdruck. "or" will aber zwei Ausdrücke auswerten.

Jetzt ist das natürlich

  • erstens hier egal, weil die() ggf. das Skript ohnehin beenden würde, bevor "or" ausgewertet wird
  • und zweitens auch nicht ganz richtig, weil eine Funktion ohne definierten Rückgabewert technisch gesehen dann glaube ich NULL zurückgibt, was von "or" ausgewertet werden kann, so dass es in der Praxis funktionieren würde,

aber eine Funktion ohne definierten Rückgabewert sollte nicht als Ausdruck ausgewertet werden, sagt mir mein Sinn für PHP-Ästhetik.

Viele Grüße
der Bademeister