unknown colums in field list
Michael S.
- datenbank
Folgendes Problem: ich versuche gerade eine möglichkeit einzubauen, Einträge einer Tabelle meiner Datenbank zu bearbeiten. Diese werden in ein Formular gefüllt, dieses wiederum sachgemäß mit post übergeben. Am ende liegt ein array vor mit Bezeichnungen der Spalten, wie sie in der Tabelle vorkommen.
foreach($_POST as $spalte => $wert)
{
if ($spalte!="entry_changed") mysql_query("UPDATE Kontakte SET $spalte=$_POST[$spalte] WHERE KontaktID=$_POST[KontaktID]");
echo "UPDATE Kontakte SET $spalte='$_POST[$spalte]' WHERE KontaktID='$_POST[KontaktID]'<br>";
echo mysql_error()."<br>";
}
was mir das script anschließen ausspuckt ist folgendes:
UPDATE Kontakte SET Name='Mustername' WHERE KontaktID='95'
Unknown column 'Mustername' in 'field list'
Kann mir jemand diesen kryptischen Fehler entschlüsseln?
mfg
Micha
Hi,
$spalte=$_POST[$spalte] WHERE KontaktID=$_POST[KontaktID]");
echo "UPDATE Kontakte SET $spalte='$_POST[$spalte]' WHERE KontaktID='$_POST[KontaktID]'<br>";
was mir das script anschließen ausspuckt ist folgendes:
UPDATE Kontakte SET Name='Mustername' WHERE KontaktID='95'
Unknown column 'Mustername' in 'field list'
ne, genau das tut es nämlich nicht. Beachte den Unterschied zwischen dem echo und dem $spalte. Einmal hast du ' gesetzt und einmal nicht. Damit sieht das wirkliche Statement so aus:
UPDATE Kontakte SET Name=Mustername WHERE KontaktID=95
Während die Datenbank bei einem Zahlenwert die nicht-gequoteten Wert akzeptieren sollte, sucht sie bei Mustername statt einer Zeichenkette nach einer derartigen Spalte.
MfG
Rouven
Hi !
Das ist die Query:
mysql_query("UPDATE Kontakte SET $spalte=$_POST[$spalte] WHERE KontaktID=$_POST[KontaktID]");
Das ist der Output auf dem Bildschirm
echo "UPDATE Kontakte SET $spalte='$_POST[$spalte]' WHERE KontaktID='$_POST[KontaktID]'<br>";
Bei Query schreibst Du
$spalte=$_POST[$spalte]
Bei Output schreibst Du aber
$spalte='$_POST[$spalte]'
Somit gibst Du auf dem Bildschirm das richtig geschriebene Statement aus, die Query hat aber den Fehler, daß die Hochkomma vor und nach $_POST[$spalte] fehlen.
Also steht im Query:
NAME=Mustermann
statt
NAME='Mustermann'.
Er versucht also den Inhalt von der Tabellenspalte "Name" mit dem Inhalt der nicht vorhandenen Tabellen-Spalte "Mustermann" zu vergleichen !
Gruß
Hans
Hi,
Folgendes Problem: ich versuche gerade eine möglichkeit einzubauen, Einträge einer Tabelle meiner Datenbank zu bearbeiten. Diese werden in ein Formular gefüllt, dieses wiederum sachgemäß mit post übergeben. Am ende liegt ein array vor mit Bezeichnungen der Spalten, wie sie in der Tabelle vorkommen.
Du gibst momentan einen schönen String aus, der zwar gewisse Ähnlichkeiten mit der Query hat, aber eben nur Ähnlichkeiten.
Mach es besser so (also das Statement in eine Variable zusammensetzen, und dann sowohl für die Query als auch für die Ausgabe mit der Variablen arbeiten, dann sind beide identisch:
foreach($_POST as $spalte => $wert)
{
if ($spalte!="entry_changed")
{
$sql = "UPDATE Kontakte SET $spalte='$_POST[$spalte]' WHERE KontaktID='$_POST[KontaktID]'";
mysql_query($sql);
echo $sql."<br>";
echo mysql_error()."<br>";
}
Wobei das ungeprüfte Übernehmen der Daten vom User auch nicht stattfinden sollte - mysql_real_escape_string ist das mindeste, was Du auf die vom User kommenden Daten noch anwenden solltest.
cu,
Andreas