2017-05-08 13 views
-1

ヘルプが必要です。PHPとMySQLを使用してカラムに値が存在しない場合、カラム値を1つのデータで更新する必要があります。私は下の表を説明しています。PHPとMySQLを使用してテーブルから検索値ごとにデータを更新する方法

db_special:

id  name  special 
1  aaa   1 
2  bbb   6 
3  ccc   1,7 
4  ddd   1,6,7 
5  eee   1 

ここに私の状態は少し複雑です。 7を、76のような値でない行にカンマで区切って更新する必要があります。私の条件に従って、テーブルは更新後に以下のようになるはずです。

1  aaa  1,7  
2  bbb   6  
3  ccc  1,7  
4  ddd  1,6,7  
5  eee  1,7 

ここで、最初の行と最後の行だけが反映されます。私は期待どおりの結果を得ることができるようにこれのためのクエリが必要です。助けてください。あなたは以下のようにのように行うことができます

+0

リレーショナル・データベースは、正規化で始まります。だからそこから始めよう。 – Strawberry

+0

スペシャルは別のテーブルのIDを参照していますか? –

+0

@RossWilson:はい、他のテーブルからのそのIDと、1つの名前がカンマで区切られた文字列として保存されている場合は複数あります。 – subhra

答えて

1

$select = "SELECT special FROM db_special" //select data 

while($result) { // go through each loop 
    $special = explode(",", $result['special']) ; 
    if(!in_array(7, $special) && !in_array(6, $special)) { 
     $special_new = (!empty($result['special'])) ? $result['special'].", 7" : "7"; 
     $query = update db_special SET special = $special_new //update data 
    } 
} 
+0

私はそれをテストし、あなたに知らせてください。 – subhra

+0

私は更新クエリが適切な条件が不足していると思います。私は値7/6を持っていない行を更新する必要があります。 – subhra

+0

'if(!in_array(7、$ special)&&!in_array(6、$ special)){'この条件は、データベースで6ではなく7でないことをチェックする –

関連する問題