MYSQL -> PHP syntaxfehler (Ich bin blind!)
Haschmich
- datenbank
Hallo,
ich habe einen MYSQL Syntaxfehler, und sehe ihn um himmels willen nicht folgende Zeile verursacht ihn:
$aendern = "UPDATE grapp1aeg Set
name = $name,
strasse = $strasse,
region = $region,
plz = $plz,
ort = $ort,
tel = $tel,
fax = $fax
WHERE
aegid = $id
";
$aendern = mysql_query($aendern);
echo mysql_error();
Quizfrage, was habe ich übersehen?
Hello,
ich habe einen MYSQL Syntaxfehler, und sehe ihn um himmels willen nicht folgende Zeile verursacht ihn:
$aendern = "UPDATE grapp1aeg Set
name = $name,
strasse = $strasse,
region = $region,
plz = $plz,
ort = $ort,
tel = $tel,
fax = $fax
WHERE
aegid = $id
";
Wie wäre es mit ein paar Singlequotes um die Text-Werte?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
echo $begrüßung;
Wie wäre es mit ein paar Singlequotes um die Text-Werte?
Und was ist mit der kontextgerechten Behandlung der Werte?
echo "$verabschiedung $name";
Mahlzeit Haschmich,
Quizfrage, was habe ich übersehen?
3 Dinge:
name = $name,
1. Es fehlen die einfachen Anführungszeichen, da es sich beim Inhalt der Variablen "$name" vermutlich um einen String handelt und die Spalte "name" vermutlich den Datentyp VARCHAR (o.ä.) handelt.
2. Es fehlt die kontextgerecht Behandlung der Variablen - Dein Skript ist in höchstem Maße anfällig für "SQL-Injection" (informiere Dich zu diesem Stichwort!) ... vermutlich werden die Werte der einzelnen Variablen auch noch aus dem $_GET- oder $_POST-Array herauskopiert?
Ich würde Dir ungefähr folgendes vorschlagen:
$aendern = sprintf("UPDATE grapp1aeg SET
name = '%s',
strasse = '%s',
region = '%s',
plz = '%s',
ort = '%s',
tel = '%s',
fax = '%s'
WHERE
aegid = %d
",
[link:http://de3.php.net/manual/en/function.mysql-real-escape-string.php@title=mysql_real_escape_string]($name),
mysql_real_escape_string($strasse),
mysql_real_escape_string($region),
mysql_real_escape_string($plz),
mysql_real_escape_string($ort),
mysql_real_escape_string($tel),
mysql_real_escape_string($fax),
mysql_real_escape_string($id)
);
Oder benutze gleich mysqli ...
$aendern = mysql_query($aendern);
3. Die Variable "$aendern" enthielt vorher in einem String den SQL-Befehl - nachher enthält sie plötzlich einen ganz anderen Datentyp mit einer komplett anderen Bedeutung. Tu Dir selbst einen Gefallen und "recycle" Variablen nicht auf diese Weise: Du erschwerst Dir nur selbst die Fehlersuche ... oder ist Dir in 3 Monaten noch auf den ersten Blick klar, was wann in welcher Variablen steht?
MfG,
EKKi