Mysql fetch assoc funzt nich

Hi

ich hab vor kurzem erst mit php und mysql angefangen (mittels xampp) und hab da jetzt ein problem:

Also ich hab eine auswahl seite gemacht und die schickt dann die daten an das unten.
und dann kommt immer die fehlermeldung:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\xampp\htdocs\auwert.php on line 42 (also: while ($dsatz = mysql_fetch_assoc($resul)))

[code]<?php
mysql_connect(“localhost”,“root”, “”);
mysql_select_db(“autohilfe”);

     $data = "SELECT * FROM autos";
     $data .= " WHERE ps >= " . $_POST["minPS"] . " AND ps <= " . $_POST["maxPS"];
     $data .= " AND marke = " . $_POST["marke"] . " AND farbe = " . $_POST["farbe"];
     $data .= " AND jahr >= " . $_POST["anfjahr"] . " AND jahr <= " . $_POST["endjahr"];
     $data .= " ORDER BY marke";
                                                                   
       $numb = "0";

     $resul = mysql_query($data);
     
     while ($dsatz = mysql_fetch_assoc($resul))
     {

             echo "Auto&nbsp;$numb";
             echo $dsatz["marke"] . ",<br> " . $dsatz["ps"] . "PS<br />" . $dsatz["farbe"] . "<br>Baujahr:&nbsp;" . $dsatz["jahr"] . "<br>";
     }
?>[/code]

kann mir da einer behilflich sein??

gruß Lenni

Überprüf ob Fehler nach mysql_query auftraten mit mysql_error().

Vor allem solltest du Zeichenketten in einfache Anführungsstriche setzen und auch Probeausgaben von deinem erzeugten SQL Statement machen, ob dort auch wirklich das steht, was du erwartest.

Nicht Wirklich

Das war ja hilfreich.
mysql_error wird einen Fehlertext zurückgeben, wenn bei mysql_query ein Fehler aufgetreten ist. Les dir am besten die verlinkte Seite durch, wie man die Funktion nutzt.

Ich sehe in deinem SQL Statement keine Anführungsstriche und keinerlei Überprüfung der Benutzereingaben, was leicht für Injektionen missbraucht werden kann.
Mit Zahlen mag es ohne Anführungszeichen noch klappen, aber bei Zeichenketten wird’s schwierig.

ähm

probeausgaben??

z.b:

Der „SQL Code“ ist aus PHP-Sicht nach wie vor nur eine stinknormale Zeichenkette, und kann auch wie eine behandelt werden.
Was du dann sehen müsstest ist das von dir erzeugte SQL Statement mit den Werten der $_POST Variable eingesetzt.

wenn ich

mache kommt immer:

SELECT * FROM autos WHERE ps >= 0 AND ps <= 1100 AND marke = Mercedes AND farbe = Gelb AND jahr >= 1905 AND jahr <= 2010 ORDER BY marke

echo mysql_error() sollst du machen.

hi,

so grob gesagt fehlen da Anführungszeichen für Strings, also Zeichenketten, wie zB. Mercedes - also statt Mercedes sollte da stehen ‘Mercedes’, bei den Jahreszahlen ist das u.U. nicht notwendig.

Jedoch musst Du dringend darauf aufpassen, dass Du die Benutzerdaten da ungefiltert reinlässt, wäre ich zB. ein böser h4xharald würde ich da einfach statt Mercedes mit manipulierten Forms oder einer solchen Anfrage was anderes anfragen statt “Mercedes”, und könnte so ggf. absichtlich irgendwas umgehen - zB. einen mit Passwörtern gestützten Login, indem Du zB. abfragst

… und ich dann statt dem Benutzernamen in $_POST[‘username’] einfach statt "miro"
etwas übergebe wie [b]" OR true; --[/b]

Das würde dann alles aus der Tabelle users zurückgeben und
nennt sich SQL-Injection, siehe auch dazu den Wikipedia-Artikel

ciao

Super!!
Danke!!

Jetzt Läufts!!

Klasse!!

hi,

nimm Dir bitte meine Info zu Herzen :unamused:

ich schwörs, ich h4xx0r Deine seite sonst binnen Minuten :ps:

ciao

Jep mach ich

aber das war nur für die schule
das sieht sowieso nur mein informatik lehrer!

aber wenn ich was ernsthaftes mache bestimmt!!

bye