MySQL Syntax Felher - finde ihn nicht...

Ich bekomme die Meldung, dass in Zeile 4 ein Fehler ist, finde aber keinen…

[php]
include „inc.sql.zugangsdaten.php“;
$sql=„INSERT INTO tabelle1 SET
name='“.$_POST[‚name‘].„‚,
ort=‘“.$_POST[‚ort‘].„‚,
mail=‘“.$_POST[‚mail‘].„'“;
mysql_query($sql) or die(mysql_error());
echo „Die Daten sind erfolgreich in der Datenkank abgelegt worden.

“;
[/php]

wieso lest ihr eigentlich nie reichtig? im referenzhandbuch steht dazu alles.

ersetz’ das SET mit VALUES und mach’ klammern um das einzufügende.

es kann noch zweckmäßig sein, die ID (falls vorhanden) mit ‚‘ (einfachen hochkommata, leergelassen) mit zu übertragen.

Nils aka XraYSoLo

Lieber vorher selber nachlesen :wink:

@GoBo: Ich seh direkt keinen Fehler. Schreib mal welche Fehlermeldung kommt.

N43

Ich denke mal er hat euch verstanden.
Also nächstes mal selber nachlesen, aber einmal denke ich können wir hier nun auch nochmal jemandem auf die Sprünge helfen

[PHP]
include („inc.sql.zugangsdaten.php“);
$sql= "
INSERT INTO
tabelle1 (
name,
ort,
mail
) VALUES (
‚„.mysql_real_escape_string($_POST[„name“]).“‘,
‚„.mysql_real_escape_string($_POST[„ort“]).“‘,
‚„.mysql_real_escape_string($_POST[„mail“]).“‘
) ";
mysql_query($sql) or die(mysql_error());
echo „Die Daten sind erfolgreich in der Datenkank abgelegt worden.

“;
[/PHP]

Das mysql_real_escape_string() sorgt dafür, dass die MySQL - Injection erschwert wird

Mit ging es darum, dass die Syntax von seinem SQL Befehl richtig ist, deshalb hab ich ihn nach der Fehlermeldung gefragt.

N43

Dank Euch, funktioniert jetzt…

Dank Euch, jetzt funktioniert es so:

[PHP]
$sql= "
INSERT INTO
tabelle1
SET
name = ‚„.$_POST[‚name‘].“‘,
ort = ‚„.$_POST[‚ort‘].“‘,
mail = ‚„.$_POST[‚mail‘].“‘
";
mysql_query($sql) or die (mysql_error());
[/PHP]

und für die zukunft:

SET: bei UPDATE und REPLACE
INTO: bei INSERT

Nils aka XraYSoLo

Warum soll er nicht SET bei INSERT verwenden, damit sieht er direkt, welcher Spalte er welchen Wert zuweist. Er kann damit dann eben nicht mehrere Datensätzer auf einen Schlag einfügen, aber das ist ja auch nicht immer notwendig.

N43

und wegen der mysql injection, da kann man besser htmlspecialchars() nehmen, die führt die query auf jeden fall aus :wink: