Veröffentlicht 17. November 200420 j Hallo, Ich habe folgendes Problem ich übergebe Daten aus einem Formular an eine php Datei und möchte diese dann in eine Datenbank schreiben aber ich bekomme jedes mal diese --> Parse error: syntax error, unexpected T_STRING in C:\apachefriends\xampp\htdocs\projekt\log.php on line 18 Fehlermeldung! Kann mir jemand sagen woran das liegt? So sieht meine Datenbank aus: Typ NULL ID int(11) Nein Benutzername varchar(50) Nein Passwort varchar(50) Nein Vorname varchar(50) Nein Nachname varchar(50) Nein Mail varchar(100) Nein So Sieht mein Formular aus: <html> <head> <title>Registrierung</title> <style type="text/css"> <!-- .form { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-style: normal; line-height: normal; font-weight: bold; color: #CCCCCC; text-decoration: none; cursor: default; filter: Glow(Color=000000, Strength=70); } --> </style> <style type="text/css"> <!-- .button { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: #666666; } --> </style> </head> <body bgcolor="#2D3035"> <form action="log.php" method="POST" class=".form"> <table width="47%" border="0"> <tr class="form"> <td width="39%">Benutzername: </td> <td width="61%"> <input type="Text" name="Benutzername" value="" size="30" class=".form"></td> </tr> <tr class="form"> <td>Vorname: </td> <td> <input type="Text" name="Vorname" value="" size="30" class=".form"></td> </tr> <tr class="form"> <td>Nachname: </td> <td> <input type="Text" name="Nachname" value="" size="30" class=".form"></td> </tr> <tr class="form"> <td>E-Mail Adresse: </td> <td> <input type="Text" name="Mail" value="" size="30" class=".form"></td> </tr> <tr class="form"> <td>Kennwort: </td> <td> <input type="Password" name="Kennwort" value="" size="30" class=".form"></td> </tr> <tr class="form"> <td>Kennwort wiederholen: </td> <td> <input type="Password" name="Kennwortwi" value="" size="30" class=".form"></td> </tr> <tr class="form"> <td><input type="Submit" name="gesendet" value="Registrieren" class=".button"> </td> </tr> </table> </form> </body> </html> So sieht meine php datei aus: <html> <title>Registrierung</title> <body> <?php $server="localhost"; $nutzer="root"; $kenn=""; mysql_connect($server,$nutzer,$kenn); mysql_select_db("database"); $Benutzername=$HTTP_POST_VARS[benutzername]; $Vorname=$HTTP_POST_VARS[Vorname]; $Nachname=$HTTP_POST_VARS[Nachname]; $Mail=$HTTP_POST_VARS[Mail]; $Kennwort=$HTTP_POST_VARS[Kennwort]; $Kennwortwi=$HTTP_POST_VARS[Kennwortwi]; INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('$Benutzername', '$Vorname', '$Nachname', '$Mail', '$Kennwort' ); ?> </body> </html> Kann mir da jemand helfen?
18. November 200420 j Hallo, ich würde sagen das hat weniger mit der DB zu tun. Eine Frage das insert into steht nicht wirklich so in der Datei drin oder? Wo ist mysql_query? Frank
18. November 200420 j Hallo: Probier mal die Zeilen: INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('$Benutzername', '$Vorname', '$Nachname', '$Mail', '$Kennwort' ); .. mit denen mysql_query("INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('".$Benutzername."', '".$Vorname."', '".$Nachname."', '".$Mai."', '".$Kennwort."' .. zu ersetzen. Hab die Syntax jetzt nicht genau überprüft... kann sein das noch klein Fehler drinne sind.. ABer die wirst du schon ausbügeln können. Gruß, Tim
18. November 200420 j also der fehler ist definitiv kein SQL-Query fehler. Laut fehlermeldung müsstest du wie meine Vorredner schon sagten, ein Syntaxfehler im PHP Script selbst sein
18. November 200420 j hallo! kann sein dass ich mich jez irre, aber muss nicht bei $HTTP_POST_VARS[''] die zwei einzelnen ' ' hin? oder kann man die weglassen? also ich meine jez z.b. $HTTP_POST_VARS['form_feld'];
18. November 200420 j @KantE Man kann beides benutzen, muss die jeweilige Variante nur fehlerfrei schreiben. Heutzutage sollte man allerdings der Sicherheit wegen _nur_ $_POST[variablenname] benutzen (siehe Link weiter unten)! @Kevinst Zuerst einmal solltest du anstatt $_HTTP_POST_VARS{'variablenname'] nur $_POST['variablenname'] nehmen - siehe hier. Dann kann die Abfrage wenn dann auch nur so funktionieren (habs mal sicherer gemacht): <?php if(isset($_POST[gesendet])) { $server = "localhost"; $user = "root"; $kenn = ""; $db = "database"; mysql_connect($server, $user, $kenn); mysql_select_db($db) mysql_select_db($db); $sql = "INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('$_POST[Benutzername]', '$_POST[Vorname]', '$_POST[Nachname]', $_POST[Mail]', '$_POST[Kennwort]')"; mysql_query($sql); if(!mysql_error()) echo "Daten erfolgreich eingetragen"; else echo mysql_error(); } else header("Location: formular.html"); ?>[/php]
18. November 200420 j Hallo, Ich habe eine php datei und wenn ich diese öffne bekomme ich folgende Fehlermeldung -->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 ')' at line 1 Ich benutze einen Apacheserver von XAMPP Dies ist meine php datei: <?php if(isset($_POST[gesendet])) { $server = "localhost"; $user = "root"; $kenn = ""; $db = "database"; mysql_connect($server, $user, $kenn); mysql_select_db($db); $sql = "INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('$_POST[benutzername]', '$_POST[Vorname]', '$_POST[Nachname]', $_POST[Mail]', '$_POST[Kennwort]')"; mysql_query($sql); if(!mysql_error()) echo "Daten erfolgreich eingetragen"; else echo mysql_error(); } else header("Location: formular.html"); ?> Kann mir da jemand helfen? Ich sehe den Fehler einfach nicht!
18. November 200420 j Hä? Du hättest doch in deinem alten Thread weiterschreiben können!? Im Code fehlt vor $_POST[Mail] ein Hochkomma.
19. November 200420 j wenn du mit einem Array arbeitest dann solltest du das anders verketten: $sql = "INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('". $_POST['Benutzername'] ."', '". $_POST['Vorname'] ."', '". $_POST['Nachname']. "', ". $_POST['Mail'] ."', '". $_POST['Kennwort'] ."')"; [/PHP] Array indizes am besten immer mit Einfachen/Doppelte-Hochkommas angeben z.b. so: [PHP] $a = $_POST['var']; $a = $_POST["var"]; nicht so: $a = $_POST[var]; [/PHP]
19. November 200420 j Versuch's im PHP-Code so: <?php $server="localhost"; $nutzer="root"; $kenn=""; $db = mysql_connect($server,$nutzer,$kenn); mysql_select_db("database", $db); [...] [/PHP]
19. November 200420 j naja die variablennamen sind aber ungünstig gewählt in deinem Beispiel. Das könnte schnell zu verwechslungen führen....
19. November 200420 j @kills Sicher ists richtiger mit Hochkommas / Anführungszeichen zu arbeiten, allerdings klappen beide Varianten. Vorteil der Variante ohne Hochkommata bzw. Anführungszeichen ist, dass man sich nicht so schnell vertippen kann.
23. November 200420 j @kills Sicher ists richtiger mit Hochkommas / Anführungszeichen zu arbeiten, allerdings klappen beide Varianten. Vorteil der Variante ohne Hochkommata bzw. Anführungszeichen ist, dass man sich nicht so schnell vertippen kann. da kann ich absolut nicht zustimmen! dazu gabs auch schonma nen thread, einfach ma suchen. ohne hochkommas, kann in manchen fällen zu fehl interpretationen führen....
23. November 200420 j Du meinst diesen? Hier gehts aber darum, ob $_POST['variable'] oder $_POST[variable] richtig ist...und nicht, ob man '" bzw. "' schreiben sollte.
23. November 200420 j Du meinst diesen? Hier gehts aber darum, ob $_POST['variable'] oder $_POST[variable] richtig ist...und nicht, ob man '" bzw. "' schreiben sollte. nein hab ich nicht gemeint! ich kann den Tread aber grad auch nicht finden @kills Sicher ists richtiger mit Hochkommas / Anführungszeichen zu arbeiten, allerdings klappen beide Varianten. Vorteil der Variante ohne Hochkommata bzw. Anführungszeichen ist, dass man sich nicht so schnell vertippen kann. Also ich hab das jetzt so verstanden, dass wenn ich $_POST[abc] schreibe kann ich mich nicht so schnell vertippen als wenn ich $_POST['abc'] bzw $_POST["abc"] schreibe, was ich für schwachsinn halte
24. November 200420 j Äh, nee, sorry, hatte mich verschrieben Es geht mir um $sql = "INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('". $_POST['Benutzername'] ."', '". $_POST['Vorname'] ."', '". $_POST['Nachname']. "', ". $_POST['Mail'] ."', '". $_POST['Kennwort'] ."')"; [/php] versus [php] $sql = "INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('$_POST[Benutzername]', '$_POST[Vorname]', '$_POST[Nachname]', '$_POST[Mail]', '$_POST[Kennwort]')"; auf erste Variante bezog sich das Vertippen.
24. November 200420 j Äh, nee, sorry, hatte mich verschrieben Es geht mir um $sql = "INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('". $_POST['Benutzername'] ."', '". $_POST['Vorname'] ."', '". $_POST['Nachname']. "', ". $_POST['Mail'] ."', '". $_POST['Kennwort'] ."')"; [/php] versus [php] $sql = "INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('$_POST[Benutzername]', '$_POST[Vorname]', '$_POST[Nachname]', '$_POST[Mail]', '$_POST[Kennwort]')"; auf erste Variante bezog sich das Vertippen. du magst recht haben mit dem vertippen, aber kann es in "deiner vereinfachten form" zu fehlern beim interpolieren kommen, da mann array keys mit strings anspricht! z.b. ungetestet! das hier gibt was anderes $sql = "INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('$_POST[Benutzername]', '$_POST[Vorname]', '$_POST[Nachname]', '$_POST[Mail]', '$_POST[Kennwort]')"; als dass.... define( 'Vorname', 535); $sql = "INSERT INTO login (Benutzername, Vorname, Nachname, Mail, Kennwort) VALUES ('$_POST[Benutzername]', '$_POST[Vorname]', '$_POST[Nachname]', '$_POST[Mail]', '$_POST[Kennwort]')";[/php] das der compiler beim parsen von $_POST[Vorname] zu erst nach einer Konstance "Vorname" sucht, und wenn er keine findet, das ganze nach String castet
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.