0

これは条件です: html と php には約 120 のフィールドを持つフォームがあり、送信時にこのフォームを作成している Web サイト用に、最初に $_REQUEST[] を使用してすべての値を取得し、次に挿入クエリ挿入を使用して、php ページに移動します。それらはすべて、私のmysqlデータベースの同じテーブルの特定の列にあります。ここで、これらの値を更新するためにすべてのプロセスを再度実行する必要があります。挿入クエリと更新クエリの構文はまったく異なるためです。

もう 100 行のコードを書きたくありません。データの更新に使用する挿入クエリ内に記述したコードを使用する方法はありますか?

4

4 に答える 4

6

実際、MySQL には、更新の構文に非常によく似た挿入の代替構文があります。あなたは書ける

insert customer set customerid=12345, firstname='Fred', lastname='Jones

個人的には、各フィールドに入力される値を簡単に確認できるため、この構文を好みます。これは、フィールドの長いリストを持つレコードに特に当てはまります。

マイナス面としては、標準 SQL ではないため、アプリを別のデータベース エンジンに移植する場合は、すべての挿入を書き直す必要があります。

私が時折使用した別のオプションは、insert ステートメントと update ステートメントを作成するための小さな関数を作成することです。その後、生成されたコードがどれほど異なっていても、関数の構文は同じにすることができます。

于 2011-07-26T18:20:03.847 に答える
2

別の代替手段として、要件とキーに応じて、次を使用できます。

replace into tbl (<cols>) values (<vals>)

存在しない場合は挿入するか、キーに基づいて置換します (1 つのクエリで挿入/更新)

または、挿入するだけで2回挿入したくない場合は、次を使用できます。

insert ignore into tbl (<cols>) values (<vals>)

キーに基づいてレコードがすでに挿入されている場合は、正常に無視されます

詳細についてはhttp://dev.mysql.com/doc/refman/5.0/en/replace.html

于 2011-07-26T18:34:29.390 に答える
1

INSERTUPDATEには非常によく似た構文があります。

INSERT INTO <table> SET
 column1 = value1,
 column2 = value2,
 ...
;

UPDATE <table> SET
 column1 = value1,
 column2 = value2,
 ...
WHERE <condition>
;
于 2011-07-26T18:15:20.043 に答える
1
INSERT INTO yourtable (field1, field2, field3, ...)
VALUES ($field1, $field2, $field3, ...)
ON DUPLICATE KEY UPDATE field1=VALUES(field1), field2=VALUES(field2), etc...

この構造の詳細はこちら.

于 2011-07-26T18:16:28.693 に答える