Tom: mysql und php $_get

Beitrag lesen

Hello,

»» Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/www/xxxxx/html/webmeisterin/content-test.php on line 24

Du hast vermutlich Dein "include.inc.php" nicht angepasst.

Dort müsste die Linkressource '$con' auch erzeugt werden durch das

$con = mysql_connect(....);

stimmt, das hatte ich nicht, danach kam dann folgendes:

SELECT id, text, ueberschrift, aufmacher, datum, autor, kategorie FROM news WHERE intro=1 AND kategorie=mysql_real_escape_string()

Fehler im SQL-Statement: FUNCTION usr_xxxxx.mysql_escape_string does not exist

Nun bescheinigt MySQL Dir, dass Du Dein Statement falsch zusammengebaut hast. MySQL kennt die Funktion nicht, die du in der Textschnittstelle zur Ausführung übergeben hast. Richtig wäre aber, sie _ausgeführt_ zu übergeben, also nur ihr Ergebnis.

$sql = "SELECT id, text, ueberschrift, aufmacher, datum, autor, kategorie
            FROM news
            WHERE intro=1 AND kategorie = '" .
            mysql_escape_string($kategorie) . "'";

Nun wird die Funktion von PHP ausgeführt und nur noch das Ergebnis in den Query-String eingebaut.

Ich habe hier angenommen, dass die Variable $kategorie auch einen Text und keine Zahl enthält und die Spalte kategorie in der Tabelle ein Textfomat hat.

Wenn die Spalte kategorie ein numerisches Format hat, kannst Du anders abfragen:

$sql = "SELECT id, text, ueberschrift, aufmacher, datum, autor, kategorie
            FROM news
            WHERE intro=1 AND kategorie = " . intval($kategorie);

Das setzt voraus, dass die Kategorie 0 als ungültig erkannt wird, also nicht existiert.

Wenn der Parameter für die Kategorie per URL übergeben wird, dann taucht er im PHP-Script bei vernünftiger Einstellung im Array $_GET auf, also als $_GET['kategorie']. Das Element des Arrays kann ganz normal als Variable verwendet werden! Du kannst also gleich diese Variable in die Abfrage einsetzen.

$sql = "SELECT id, text, ueberschrift, aufmacher, datum, autor, kategorie
            FROM news
            WHERE intro=1 AND kategorie = " . intval($_GET['kategorie']);

oder eben entsprechend mit mysql_escape_string() behandelt, wenn es keine numerische Spalte ist in der Tabelle.

Allerdings hatte ich auch mal probiert, die Variable $kategorie auszugeben mit var_dump() (der Tip kam aus dem Forum) und die Ausgabe war "NULL". Ist das nicht ein Wert, den man so garnicht haben sollte??

Dann hast Du in Deinem GET-Request keinen Parameter 'kategorie' angegeben.

Liebe Grüße aus dem Cyberspace

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de