MySQL-Fehlermeldung bei eintrag per PHP
Fred
- php
Hallo,
ich habe folgenden Code:
$exp = explode(" ", $titel);
mysql_query("UPDATE such_mich SET such1 = $exp[0], such2 = $exp[1], such3 = $exp[2], such4 = $exp[3], such5 = $exp[4], such6 = $exp[5], WHERE id = '$id' ") or die (mysql_error());
Titel ist eine Zeile die mehrere Wörter enthält, ich möchte diese Wörter einzeln speichern um gezielt nach diesen Begriffen etwas abrufen zu können (ja, ich weiß das ich das auch einfach per LIKE abrufen kann, aber für meine Zwecke benötige ich es anders)
Wenn ich aber nun das Script aufrufe kommt eine MySQL-Fehlermeldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' such4 = buch, such5 = zum, such6 = kaufen, WHERE id = '169'' at line 1
ich hab überlegt und rumprobiert, aber leider kann ich den Fehler nicht finden.
Und das MySQL-Handbuch hat mich auch nicht schlauer gemacht.
Danke schonmal, Fred
Hello,
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' such4 = buch, such5 = zum, such6 = kaufen, WHERE id = '169'' at line 1
es hilft immer, sich das fertige Statement mal per echo ausgeben zu lassen, so sieht man die Fehler schneller - vor allem auch dann, wenn sie durch Variableninhalte entstehen. In deinem Fall (ich sag mal nichts zur Datenstruktur) fällt mir insbesondere auf, dass du Strings offenbar nicht mit ' (Singlequotes) versehen hast. Sind such1-3 Zahlen? Eigentlich hätte ich den Fehler sonst schon dort erwartet...
MfG
Rouven
--
\-------------------
Vegetarier essen meinem Essen das Essen weg.
Hallo,
lass das Komma vor dem WHERE weg dann sollte es funktionieren:
mysql_query("UPDATE such_mich SET such1 = $exp[0], such2 = $exp[1], such3 = $exp[2], such4 = $exp[3], such5 = $exp[4], such6 = $exp[5] WHERE id = '$id' ") or die (mysql_error());
Gruß
mabol86
Moin,
$exp = explode(" ", $titel);
mysql_query("UPDATE such_mich SET such1 = $exp[0], such2 = $exp[1], such3 = $exp[2], such4 = $exp[3], such5 = $exp[4], such6 = $exp[5], WHERE id = '$id' ") or die (mysql_error());
Das Komma und die Hochkommta wurde ja bereits angesprochen. Ich würde dir - aus eigner Erfahrung - empfehlen, den String mit der Anfrage vorher zu konstruieren, und zwar mit Hilfe des Konkatenationsoperators:
~~~php
$sql = "UPDATE such_mich" .
"SET " .
"such1 = '" . $exp[0] . "' " .
"such2 = '" . $exp[1] . "' " .
"such3 = '" . $exp[2] . "' " .
"such4 = '" . $exp[3] . "' " .
"such5 = '" . $exp[4] . "' " .
"such6 = '" . $exp[5] . "' " .
"WHERE id = '" . $id . "'");
mysql_query($sql);
if(mysql_errno() != 0) {
echo $sql;
die(mysql_error);
}
Gruß
Stareagle
Hi stareagle!
Ich würde dir - aus eigner Erfahrung - empfehlen, den String mit der Anfrage vorher zu konstruieren, und zwar mit Hilfe des Konkatenationsoperators:
Wieso? Whitespaces werden sowieso ignoriert:
$sql = "UPDATE such_mich
SET
such1 = '" . $exp[0] . "',
such2 = '" . $exp[1] . "',
such3 = '" . $exp[2] . "',
such4 = '" . $exp[3] . "',
such5 = '" . $exp[4] . "',
such6 = '" . $exp[5] . "'
WHERE id = '" . $id . "'";
Außerdem haben die Kommata gefehlt.
MfG H☼psel
echo $begrüßung;
$sql = "UPDATE such_mich
SET
such1 = '" . $exp[0] . "',
such2 = '" . $exp[1] . "',
such3 = '" . $exp[2] . "',
such4 = '" . $exp[3] . "',
such5 = '" . $exp[4] . "',
such6 = '" . $exp[5] . "'
WHERE id = '" . $id . "'";
>
> Außerdem haben die Kommata gefehlt.
Das Wichtigste fehlt immer noch: [mysql_real_escape_string()](http://de.php.net/manual/en/function.mysql-real-escape-string.php), um Sonderzeichen in $exp[x] und auch $id MySQL-gerecht zu behandeln.
echo "$verabschiedung $name";