Maddin: mysql_num_rows()-Fehler, aber wo?!

Hallo liebes Forum,

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

Ich möchte überprüfen, ob ein Post-Wert (englisch) schon in einer Datenbank-Tabelle vorhanden ist.
Das Ganze wollte ich folgendermaßen lösen:

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

$_POST['englisch'] kommt beim Skript an - ist also nicht leer...

Ich erhalte aber trotzdem folgende Warnung:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in blablabla\htdocs\index.php on line 51

Findet jemand den Fehler?
Btw.: Die Werte existieren alle...

Liebe Grüße aus Recklinghausen
Maddin

  1. Nachtrag:

    Uff. Erst jetzt - als ich einen Blick auf den Code hier im Forum geworfen habe - habe ich gesehen, dass die '-Zeichen vor und nach der Variable fehlen...

    Sorry, dass ich eure Zeit unnötig beansprucht habe.
    Kann geschlossen werden.

    Liebe Grüße,
    Maddin

  2. Hi,

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

    Die Behandlungen, denen du den Wert hier unterziehst, sind total blödsinnig.

    Lies hier nach, wie es richtig geht: http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  3. 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