Hi!
Ich hab das nächste problem,
Ja, da gibt es einiges an Problemen.
Wie ich bereits sagte, darfst du niemals Variablen ungeprüft übernehmen und in deine Abfragen einbauen.
So nun habe ich hierdas wobei $grade aus einem optionfeld geholt wird, in dem halt 50, 100 oda 200 usw. steht:
$sql="insert into $grade values ('','$frage','$ant1','$ant2','$ant3','$ant4','$richtig')";
Was ist denn jetzt, wenn jemand per URL (oder vielleicht auch per POST-Request) einen anderen Wert übergibt?
Dann werden dort Einträge in eine andere Tabelle gemacht.
Und da du keine Spaltennamen mit angibst, so wie ich das empfohlen habe, würde es wohl keine Fehlermeldung geben, sondern der Eintrag würde dann wohl gemacht werden...
Du mußt alle Daten, die von außen kommen, grundsätzlich als böse ansehen.
Niemals darfst du damit so - ungeprüft und unbereinigt - weiterarbeiten.
Ich habe dir da bereits einen Link gepostet...
Schau dir auch mal das an: http://de.wikipedia.org/wiki/SQL-Injektion
Mit einem Script wie deinem, ist es nicht besonders schwer, die Kontrolle über deine Datenbank zu übernehmen und mal eben ein paar Tabellen zu killen.
Das ist wirklich fahrlässige Programmierung.
$result=mysql_query($sql);
$result ist mal wieder leer
Und es gibt keine Fehlermeldung?
Wieso fängst du die Fehler nicht ab?
Zumindest zu Testzwecken solltest du das tun:
$result=mysql_query($sql) or die( "Fehler: " . mysql_error() );
PS: phpmyadmin meldet bei
insert into 50 values ('','gf','df','fd','ert','fg','kjl'):#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '50 values ('','gf','df','fd','ert','fg','kjl')' at line 1
Deine Tabelle heißt wirklich "50"?
Das ist aber gar nicht gut...
Prinzipiell ist das zwar erlaubt, aber ich würde dir doch stark davon abraten, einfach nur eine Zahl als Tabellennamen zu verwenden.
Hier liegt auch dein Problem.
Setze den Tabellennamen in Backticks, dann müßte es funktionieren:
INSERT INTO
50 VALUES ('','gf','df','fd','ert','fg','kjl');
Aber halt Backticks und keine Single-Quotes. Dann bekommst du wieder die Fehlermeldung, die du vorher hattest...
Außerdem beendest du dein Statements mit einem Doppelpunkt anstelle eines Semikolons.
Schöner Gruß,
rob