Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

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

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

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'];

@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]

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!

Hä? Du hättest doch in deinem alten Thread weiterschreiben können!?

Im Code fehlt vor $_POST[Mail] ein Hochkomma.

Beide zusammen gebaut

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]

Versuch's im PHP-Code so:


<?php
$server="localhost";
$nutzer="root";
$kenn="";
$db = mysql_connect($server,$nutzer,$kenn);
mysql_select_db("database", $db);
[...]
[/PHP]

naja die variablennamen sind aber ungünstig gewählt in deinem Beispiel.

Das könnte schnell zu verwechslungen führen....

@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. :)

@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....

Du meinst diesen?

Hier gehts aber darum, ob $_POST['variable'] oder $_POST[variable] richtig ist...und nicht, ob man '" bzw. "' schreiben sollte.

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

Äh, nee, sorry, hatte mich verschrieben 00000002.gif

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.

Äh, nee, sorry, hatte mich verschrieben 00000002.gif

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.