Eintrag über PHP-Formular funktioniert nicht
Felix der Hase
- datenbank
2 ChrisB
Hallo,
ich möchte, dass auf der Homepage ein Benutzer ein Formular ausfüllen kann, dieses dann abschickt und in eine MySQL-Datenbank eingetragen wird.
Hier mein Quelltext:
mysql_connect("","root");
mysql_select_db("regatta2010");
$sqlab = "insert 07";
$sqlab .= "(verein, athlet1, jg1) values";
$sqlab .= "('" . $\_POST["verein"] . "',";
$sqlab .= "'" . $\_POST["athlet1"] . "',";
$sqlab .= "'" . $\_POST["jg1"] . "')";
mysql\_query($sqlab);
Es soll erstmal zum ausprobieren in Tabelle 07 eingetragen werden, das wollte ich später noch durch ein $_Post ersetzen, aber das ist erstmal zweitrangig ;-)
Also kann mir jemand sagen wo der Fehler liegt? Das würde mir sehr weiter helfen...
Ich benutze XAMPP-localhost als Server mit den Standardeinstellung falls das was zur Sache tut.
Gruß Felix
Hi,
Es soll erstmal zum ausprobieren in Tabelle 07 eingetragen werden, das wollte ich später noch durch ein $_Post ersetzen, aber das ist erstmal zweitrangig ;-)
Also kann mir jemand sagen wo der Fehler liegt?
Ja, MySQL kann das - dazu musst du aber erst mal danach fragen, was es zu bemängeln hat.
Gewöhne dir an, in deinen Scripten eine sinnvolle Fehlerbehandlung durchzuführen.
Dazu gehört erst mal, den Rückgabewert von Funktionen auszuwerten - die meisten mysql-Funktionen liefern false, wenn sie nicht fehlerfrei ausgeführt werden konnten.
Und dann benutzt du mysql_error, um die Datenbank zu fragen, was ihr nicht passte. Dazu eine Kontrollausgabe der Query, die du gesendet hast, per echo.
Und nachdem du das gemacht hast, gehst du noch mal im MySQL-Handbuch nachlesen, wie die korrekte Syntax für INSERT lautet.
Und dann informierst du dich noch über das Thema SQL Injection, und was du dagegen zu unternehmen hast. http://aktuell.de.selfhtml.org/artikel/php/kontextwechsel/
MfG ChrisB
Hallo,
Es soll erstmal zum ausprobieren in Tabelle 07 eingetragen werden, das wollte ich später noch durch ein $_Post ersetzen, aber das ist erstmal zweitrangig ;-)
das superglobale Array heißt $_POST und einen Tabellennamen aus vom Client übermittelten Daten zu nehmen, halte ich für brandgefährlich. Ganz besonders, wenn man keinerlei Anstalten macht, diese Daten zu validieren und falls als valide erkannt, kontextgerecht zu behandeln.
Also kann mir jemand sagen wo der Fehler liegt?
Neben dem, was Chris Dir bereits gesagt hat, möchte ich Dich noch darauf hinweisen, dass Du Dir richtig viel Mühe gemacht hast, einen sehr ungünstigen Tabellennamen auszudenken.
Ich zitiere Dir den entsprechenden Passus aus der Originalversion des relevanten Handbuchabschnitts, Schema Object Names, der dämlicherweise in der deutschen Übersetzung fehlt:
<zitat>
Identifiers may begin with a digit but unless
quoted may not consist solely of digits.
</zitat>
Bei Neuentwicklung sollte man die veralteten und wenig leistungsfähigen mysql_*-Funktionen selbstverständlich *nicht* mehr verwenden, sondern statt dessen die empfohlene verbesserte MySQL-Erweiterung mysqli nutzen.
Freundliche Grüße
Vinzenz