syntax fehler

Spacejumper

Erfahrenes Mitglied
hey leute habe mal wieder ein nicht funktionierendes script für euch.

Will daten Per UPDATE in meiner MYSQL tabelle ändern klappt besser als vorher aber erspuckt mir immernoch einen fehler aus:
PHP:
You have an error in your SQL syntax near 'Alter='***', Wohnort='***', Spezial='***', email='***''

ähm die * sind von mir. Daten die nicht interessant sind aber die Daten die angegeben wurden standen da drin also die werte wurden übermittelt.

Hier mal das UPDATE script:

PHP:
<?php
require("admin/lokal.php");
 $anfrage="UPDATE benutzerdaten SET Id='$Id', Nickname='$Nickname', Kennwort='$Kennwort', Status='$Status', Vorname='$Vorname', Nachname='$Nachname', Geschlecht='$Geschlecht', Alter='$Alter', Wohnort='$Wohnort', Spezial='$Spezial', email='$email',I CQ='$ICQ', pcname='$pcname', CPU='$CPU', Ram='$Ram', Grafik='$Grafik', Sound='$Sound', Platte1='$Platte1', Platte2='$Platte2', Laufwerk1='$Laufwerk1', Laufwerk2='$Laufwerk2', Laufwerk3='$Laufwerk3', Motherboard='$Motherboard', Spezielles='$Spezielles', ac='$ac'";
 if ($ergebnis=mysql_query($anfrage))
    {echo "ID geändert<br><a href='admin.php?go=admin/mitglieder.php'>zurück</a>";}
 else
  {echo "Fehlermeldung=".mysql_error();};
 mysql_close($link);
?>

hoffe ihr habt einen Rat für mich.
 
Hi!

Ganz einfache zu lösendes Problem! Laut folgender Webseite: mySQL-Dokumentation ist das Wort "Alter" ein reserviertes Wort und darf/kann also nicht als Feldname verwendet werden. Bennen es einfach um nach "Alter1" oder etwas ähnlichem...

MfG ..::SD::..
 
When mich nicht alles täuscht hast du bei deinem Update vergessen anzugeben wo er diesen zu tun hat.

$sql = "UPDATE tab SET bla = "$bla" WHERE id = "$id";


Natürlich muss dann die Syntax korrekt sein.
 
Ne ne das mit dem WHERE ist richtig so also daran liegt es nicht die werte werden schon übertragen.
jetzt kommt aber diese meldung:
Duplicate entry '1' for key 1

ich habe Alter jetzt in Alter1 geändert aber warum macht er das jetzt das dürfte er normal net.
 
Ich empfehle dir erst einmal Struktur in die Abfrage zu bekommen, damit es etwas an Übersichtlichkeit gewinnt. Desweiteren solltest du Datenbank-, Tabellen-, Index-, Spalten- und Alias-Namen durch sog „Backticks“ (`, Akzent Grave, ASCII 96) explizit kennzeichnen. Somit wird es auch keinen Konflikt mit reservierten Wörtern geben – wie es bei dir mit dem reservierten Wort alter der Fall ist.
Übrigens sollten Benutzereingabe für MySQL-Datenbankeinträge immer mittels mysql_escape_string() bzw. mysql_real_escape_string() „entschärfen“, um die sog. SQL-Injection zu vermeiden.
PHP:
<?php
	require("admin/lokal.php");

	$anfrage = "
		UPDATE
		        `benutzerdaten`

		  SET
		        `Nickname`    = '".mysql_escape_string($Nickname)."',
		        `Kennwort`    = '".mysql_escape_string($Kennwort)."',
		        `Status`      = '".mysql_escape_string($Status)."',
		        `Vorname`     = '".mysql_escape_string($Vorname)."',
		        `Nachname`    = '".mysql_escape_string($Nachname)."',
		        `Geschlecht`  = '".mysql_escape_string($Geschlecht)."',
		        `Alter`       = '".mysql_escape_string($Alter)."',
		        `Wohnort`     = '".mysql_escape_string($Wohnort)."',
		        `Spezial`     = '".mysql_escape_string($Spezial)."',
		        `email`       = '".mysql_escape_string($email)."',
		        `ICQ`         = '".mysql_escape_string($ICQ)."',
		        `pcname`      = '".mysql_escape_string($pcname)."',
		        `CPU`         = '".mysql_escape_string($CPU)."',
		        `Ram`         = '".mysql_escape_string($Ram)."',
		        `Grafik`      = '".mysql_escape_string($Grafik)."',
		        `Sound`       = '".mysql_escape_string($Sound)."',
		        `Platte1`     = '".mysql_escape_string($Platte1)."',
		        `Platte2`     = '".mysql_escape_string($Platte2)."',
		        `Laufwerk1`   = '".mysql_escape_string($Laufwerk1)."',
		        `Laufwerk2`   = '".mysql_escape_string($Laufwerk2)."',
		        `Laufwerk3`   = '".mysql_escape_string($Laufwerk3)."',
		        `Motherboard` = '".mysql_escape_string($Motherboard)."',
		        `Spezielles`  = '".mysql_escape_string($Spezielles)."',
		        `ac`          = '".mysql_escape_string($ac)."'

	 	  WHERE
		        `Id` = '".$Id."'
	";
	if( $ergebnis = mysql_query($anfrage) ) {

		echo 'ID geändert<br><a href="admin.php?go=admin/mitglieder.php">zurück</a>';

	} else {

		echo 'Fehlermeldung='.mysql_error();

	}
	mysql_close($link);
?>
 
Zurück