12

私はMySQLを初めて使用し、MySQLの行全体を新しい配列で更新したいと考えています。これまでのところ、Updateクエリのすべての例では、次のように列名とその列の新しい値を指定しています。

"UPDATE tablename SET columnname = '".$new_value."' WHERE columnname = '".$value."'";

更新クエリを使用してレコード全体を更新するにはどうすればよいですか、または置換クエリを使用する必要がありますか?

任意のアドバイスをいただければ幸いです。

編集:すべての列名と新しい列値を指定する必要のないクエリはありますか?

基本的に、次のようなクエリが必要です。

Primarykeycolumn='thisvalue'であるthisarrayで行全体を更新します

4

5 に答える 5

26

そのためには、次のことを行う必要があります

  1. すべての値を列挙します
  2. 主キーの列と値を知る

したがって、最終的なクエリは次のようになります。

UPDATE tablename
   SET col1 = 'val1', col2 = 'val2' ...
 WHERE id = id_value

上に示した以外に、SQLの「行全体」を更新するための魔法のコマンドはありません。そしてREPLACE、あなたがここで必要としているものではありません。

于 2012-05-13T22:38:32.547 に答える
8

IDがであると仮定して、IDを保持するかどうかによって異なりますautoincrement

REPLACE INTO mytable VALUES( new array ) ....IDも更新されます。これは、実際にはaDELETEとをエミュレートするだけだからINSERTです。

IDを保持したい場合は、UPDATE mytable SET foo='bar', baz='bat' WHERE id=12

参考までREPLACEに、一意のフィールドまたは複合主キーが自動インクリメントではないテーブルのマッピングに一般的に便利です。

于 2012-05-13T22:39:13.397 に答える
4

それが正しい方法です。

UPDATE TABLENAME SET COLUMNAME = VALUE, COLUMN2NAME = VALUE, ETC WHERE CONDITION
于 2012-05-13T22:41:30.720 に答える
3

あなたは確かにそれをすべて1つのクエリで行うことができます。this = that句をコンマで区切って追加するだけです:

"UPDATE tablename 
SET column1name = '".$new_value1."', 
    column2name = '".$new_value2."', 
    column3name = '".$new_value3."' 
WHERE columnname = '".$value."'"
于 2012-05-13T22:40:14.533 に答える