Zum Inhalt springen

Mysql Error


Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ä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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...