2017-04-08 16 views
-4

"tbl_settings"という名前のテーブルがあります。同じMysqlテーブル内の複数の行を更新するには

ID、名前、値、説明の4つの列があります。

私は、各設定のテキストボックスをリストしたhtml形式を持っています。

送信時に、設定の名前に基づいて各設定値を更新したいとします。

参考のため、私の設定名は site_title、site_title_description、contact_nameです。

行の名前に基づいて、すべての行をそれぞれの値で更新するための最良の方法を理解する助けが必要です。

私はこれを私の電話に書いていますが、現在はコードがありませんので、実行する必要があるクエリに関する一般的なアイデアをお願いします。

+0

ます。https:// DEVを.mysql.com/doc/refman/5.7/ja/update.html – RiggsFolly

+1

何を試しましたか?一般的には、個々の更新(ターゲットにする行のIDと(2)の値のユニークな組み合わせ)に対して、データベースに 'UPDATE'コマンドを発行します。 – David

+0

テキストマッチのwhere句を使った更新がそれに当てはまります。 'update table set name = 'new site title'(ここでname = 'site_title')' name'を 'site_title'とするすべての行を' new site title'にリセットします。 – chris85

答えて

1
UPDATE tbl_settings 
SET value = 'new title' 
WHERE name = 'site_title' 

これはvalue = 'new title'を持っているすべてのsite_titleの行を変更します。

WHERE句には、SELECTクエリで使用する条件と同じ条件を使用して、更新する行を表示できます。

あなたには、いくつかの他の条件に基づいてdifferentt値を割り当てたい場合は、あなたがCASE表現を使用することができます

UPDATE tbl_settings 
SET value = CASE 
    WHEN condition1 THEN 'new title 1' 
    WHEN condition2 THEN 'new title 2' 
    WHEN condition3 THEN 'new title 3' 
END 
WHERE name = 'site_title' 
AND (condition1 OR condition2 OR condition3) 

それとも、この何をしたいです:

UPDATE tbl_settings 
SET value = CASE name 
    WHEN 'site_title' THEN 'new title' 
    WHEN 'site_title_description' THEN 'new description' 
    WHEN 'contact_name' THEN 'new contact name' 
END 
WHERE name in ('site_title', 'site_title_description', 'contact_name') 
+0

複数の行を異なる値で更新する必要があります。 – MktCloud

+0

あなたはそれをより明確に説明しなければなりません。更新する行をどのように決定するのですか? – Barmar

+0

謝罪します。私は自分の電話から投稿しており、今はコンピュータから離れています。私は各行を更新するためにケースの機能を試したが、それは動作しません。 – MktCloud

関連する問題