0

私は 2 部構成の html/php フォームを持っており、$_POST 値の 1 つは session_id(); です。m は、データベース テーブル内の一意の ID になります。

フォームの最初の部分で、ユーザーが連絡先情報を入力すると、MySQL データベースに挿入されます。

INSERT INTO $table ($columns) VALUES ($values)

追加情報を入力するフォームの 2 番目の部分で、session_id() が同じ場合、送信されているすべての列を更新したいだけで、フォームの最初の部分の列とは常に異なります。 . 以前に送信されたデータをそのまま残しながら、送信されているすべての列を更新するにはどうすればよいですか。

この例では、$columns と $values は CSV 文字列です。

提出 1

$columns = "'SSID', 'Name', 'Email'";
$values = "'65464s4468fff9864wef68d', 'John Doe', 'someone@something.com'";

提出 2

$columns = "'SSID', 'Product', 'Comments'";
$Values = "'65464s4468fff9864wef68d', 'Apple', 'some comments'";

したがって、「製品」列と「コメント」列を更新するだけで済みます。これを多くの異なるフォームで動的に行う必要があるため、挿入されているのは既に唯一の列であるため、更新する列を指定する必要はありません。

私は次のようなことを試みています:

INSERT INTO $table ($columns) VALUES ($values) ON DUPLICATE KEY UPDATE $columns = $columns

適切な構文は何でしょうか? 現在、これにより構文エラーが発生します

編集:最後の行を追加

4

1 に答える 1

0

次のこともできます。

REPLACE INTO $table ($columns) VALUES ($values);
于 2013-08-26T20:38:40.490 に答える