やりたいこと
名前 | 8/1 | 8/2 | 8/3 | 8/4 | 8/5 | 8/6 |
---|---|---|---|---|---|---|
名前1 | 3 | 2 | 3 | 5 | 3 | 2 |
名前2 | 6 | 2 | 2 | 5 | 5 | 3 |
名前3 | 4 | 1 | 3 | 5 | 5 | 2 |
上記のようなデータがあった場合
「名前1」の横行「2」の値を「7」で上書き
といったことがしたいのです
試したこと
PRAGMA table_infoでカラム名を配列にして下記のようにしました
PHP
1//名前1の行データ取得 2$st = $pdo->query("SELECT * FROM テーブル WHERE 名前 = '名前1'"); 3$data = $st->fetch(); 4 5//カラム名の数だけまわす 6foreach($col_list as $val){ 7 8//データが2ならば 9if($data[$val] === "2"){ 10 11$stmt = $pdo -> prepare("UPDATE テーブル SET {$val}=:val1 WHERE 名前=:tage"); 12$ft[":val1"] = "7"; 13$ft[":tage"] = '名前1'; 14$stmt->execute($ft); 15 16} 17}
このような感じで出来ないことはないのですが
なんか無理やり感・強引感があり…もっとスマートにできる内容でないかと相談させて頂きました
本来は列でやることなのはわかっているつもりなのですし、
テーブル設計自体がおかしかったことも承知しております。
作りこんだ後の修正でしたのでなんとか出来ないものかと悩んでおります
よろしくお願いいたしますm(__)m
調べたこと
・SQL行の一括更新
・SQL行のデータを繰り返す
・SQL行のデータループ
など調べましたが参考になるデータは見当たりませんでした
あなたの回答
tips
プレビュー