MySQL UPDATE Query-Syntaxfehler?
Ich bin relativ neu in MySQL und PHP und ich habe versucht, das UPDATE einer Tabelle für eine sehr lange Zeit jetzt, ich habe Google gesucht und SO und ich kann immer noch nicht herausfinden.
Hier ist der php:
$info = array('about_me' => NULL, 'profile_pic' => NULL, 'political_party' => NULL, 'econ_views' => NULL, 'religious_views' => NULL,
'abortion_view' =>NULL,'gay_marraige' => NULL, 'other' => NULL);
foreach ($_POST as $key => $value) {
$info[$key] = mysql_escape_string($value);
}
$about_me = $info['about_me'];
$profile_pic = $info['profile_pic'];
$econ_views = $info['econ_views'];
$religious_views = $info['religious_views'];
$abortion_view = $info['abortion_view'];
$gay_marraige = $info['gay_marraige'];
$other = $info['other'];
$political_party = $info['political_party'];
//Connect to database
require 'db.php';
$query = "UPDATE `users` SET `about_me`=$about_me, `profile_pic`=$profile_pic, `econ_views`=$econ_views,
`religious_views`=$religious_views,`abortion_view`=$abortion_view,`gay_marriage`=$gay_marraige,
`other`=$other, `political_party`=$political_party WHERE `username`=emoore24";
echo "$query"."<br /><br />";
$result = mysql_query($query) or die(mysql_error());
echo "success"
Dieser läuft auf einem Formular mit vielen text-Bereiche und ein select-element. Ich lief auch alles mit einfachen strings als Daten und bekam dies:
UPDATE
users
SETabout_me
=test über,profile_pic
=,econ_views
=test econ,religious_views
=test rel,abortion_view
=test Abtreibunggay_marriage
=test-Homosexuell Ehe,other
=test anderepolitical_party
=Demokrat, WOusername
=emoore24Haben Sie einen Fehler in Ihrer SQL-syntax; Lesen Sie im Handbuch, das entspricht Ihrer MySQL - >server-version für den richtigen syntax in der Nähe '
econ_views
=test econ >religious_views
=test rel,abortion_view
=test abor' at line 1
Gehe ich davon aus, dass es etwas klein, aber ich kann es nicht sehen. Könnte mir jemand helfen?
InformationsquelleAutor emoore | 2012-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht setzen Sie Anführungszeichen um den string-literalen.
Werden sollte:
Wenn Sie PDO mit prepared statements, wäre es viel einfacher und sicherer, und Sie nicht haben, um sorgen über die Angebotserstellung oder die Flucht Literale. Zum Beispiel, hier ist, wie ich schreiben könnte, dass-code:
Ah, nvm ich sehe... vielen Dank!
Verwenden Sie einfache Anführungszeichen für string-Literale in SQL. Siehe meine Antwort an unterschiedliche Datenbanken verwenden unterschiedliche Namen zitieren
Auch sollte man sich die falsche Schreibweise "gay_marraige" $info-Arrays.
InformationsquelleAutor Bill Karwin
Müssen Sie zitieren den text in der Abfrage
Und das gleiche tun für die anderen Felder.
InformationsquelleAutor jprofitt
Deine Abfrage ist falsch. Sie müssen, setzen Sie Anführungszeichen um alle Werte :
Ändern Sie Ihre Abfrage wie diese:
Hoffe, das funktioniert 🙂
InformationsquelleAutor Sabari
profile_pic
= auch falsch aussieht. Ich starte meine Abfragen mit der hand in eine mysql-IDE-oder mysql-Kommandozeilen-editor, um zu sehen, was die Probleme sind.Starte ich auch mit einem kleinen select-Anweisung und bauen Sie es. Nachdem ich eine select-Anweisung, die Werke, die ich schalten Sie es in einen update-Anweisung.
InformationsquelleAutor Robert Peters