mysql_num_rows()-Fehler, aber wo?!
Maddin
- php
0 Maddin1 ChrisB2 Vinzenz Mai
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
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
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
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