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)))
Ü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.
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.
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.
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