私のテーブル(複数可)構造MySQLのINSERT INTO ... ON DUPLICATE KEY UPDATEの正しい構文は何ですか? PHP 5.0 <br> 中 -
+-------+--------------+------+------+-------------------+
| Field | Type | Null | Key | Default |
+-------+--------------+------+------+-------------------+
| id | int(11) | NO | PRI | AUTO INCREMENT |
| lesson| varchar(255) | NO | | LESSON_NAME |
| exam | char(50) | NO |UNIQUE| NO DEFAULT |
| quest | text | NO | | NO DEFAULT |
| answer| text | NO | | NO DEFAULT |
| note | text | NO | | NO DEFAULT |
+-------+--------------+------+------+-------------------+
とi'am AJAX($ポスト)を介して、このテーブルを追加するためにいくつかの値を掲示する(MySQLは/各1は、以下のものと同じです) database.phpでポストされたデータを取得し、テーブルを修正するために、このレコードを追加する
function update_table ($proper_table, $name, $question, $answer, $note) {
$sql = "INSERT INTO $proper_table (id, lesson, exam, quest, answer, note) VALUES ('', '', $name, $question,$answer,$note) ON DUPLICATE KEY UPDATE exam = $name, quest = $question, answer = $answer, note = $note";
$result= mysql_query($sql)or die(mysql_error());
}
$ proper_table変数が別の変数によって取得され、テーブルに追加する機能があります。
(注:元のテーブルのフィールドと変数は違っています(トルコ語)わかりやすいように、私は英語に翻訳しましたが、構文は同じです)
質問:検査フィールドが同じであれば、これらの変数はすべてこのレコードを更新するために使用されます。それ以外の場合は、このレコードを新しいレコードとして適切なテーブルに挿入します。
しかし
以下
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
のようなエラーを取得しi'amいかなる障害のあるコーディングはありますか?何が解決策になりますか?
おかげで今...
ようにそれを確認する必要があります。代わりにprepared statementを使用してください(mysqli拡張のドキュメントを参照) – Vitamin
または少なくとも値を引用符( ')で囲みます。関係する変数の値または最終的なクエリ文字列(変数なし)を指定してください。 – Basti