Vinzenz Mai: mysql_num_rows()-Fehler, aber wo?!

Beitrag lesen

Hallo,

es mag sein, dass ich schon zu lange Zeit nichts mehr im Bereich PHP gemacht habe, oder heute einfach nur auf dem Schlauch liege...

dann wird es an der Zeit, Dich mit dem Kontextwechsel vertraut zu machen, denn abgesehen von den fehlenden Anführungszeichen, die Dir bereits aufgefallen sind ...

[code lang=php]  if (mysql_num_rows(mysql_query("SELECT id FROM vokabeln WHERE englisch LIKE ".trim(addslashes(htmlentities($_POST['englisch'],ENT_QUOTES))))) == 1)

... enthält Dein Code eine Reihe von Fehlern:

a) unmotivierte Verwendung von htmlentities() bei Verwendung in einem
   SQL-Kontext.
b) Verwendung von addslashes statt dem angemessenen mysql_real_escape_string()
c) fehlende Berücksichtigung eines Fehlerfalls beim Rückgabewert von
   mysql_query(). Es gibt noch andere Fehlermöglichkeiten als ein fehlerhaftes
   SQL-Statement. Vor allem auch solche, die zur Laufzeit auftreten können.
d) unmotivierte Verwendung des Operators LIKE. Im Eingabetext könnte ein
   Prozentzeichen (%) stehen. Vermutlich willst Du in Wirklichkeit den
   Gleichheitsoperator verwenden.

Da solltest Du nachbessern.

Freundliche Grüße

Vinzenz