Hallo,
Allerdings verstehe ich nicht, warum dem so ist. SQL *soll* ja die Variablen parsen, und wenn es das tut, dann findet es natürlich den zugewiesenen Wert, aber eben als Wert, also als VALUE im SQL-Statement, und nicht als Spaltenüberschrift!?
Nun, das Problem ist, das NICHT SQL die Variablen parst, sondern PHP. Wenn Du diesen Ausdruck hast:
$sql_write = "INSERT INTO DEF
(ID_GEBIET, DEF, ANM, Q_DEF, Status, Autor)
VALUES
($id_gebiet, $def, $anm, $quelle, '0', 'MattFi')";
und der Einfachheit nehmen wir an, alle 4 Variablen haben dn Inhalt "test", dann würde beim SQL-Server folgende Anfrage ankommen:
INSERT INTO DEF (ID_GEBIET, DEF, ANM, Q_DEF, Status, Autor)
VALUES (test, test, test, test, '0', 'MattFi')
Da vermag er dann nicht mehr zu unterscheiden, ob eine Spalte oder ein Wert gemeint ist und geht vom ersten Fall aus. Das Verhalten ist ja in PHP ebenso. Wenn Du in PHP einen Ausdruck hat :
$variable = test;
geht PHP davon aus, das test eine Konstante ist und wirft einen Fehler. Er geht nicht automatisch davon aus, dass es sich hier um einen Wert handeln könnte.
Schöne Grüße
Axel