前提・実現したいこと
以下、2パターンの実現したいことを記述しますが、どちらかのみでも構いません。
よろしくお願いします。
$hoge = array("one", "two", "three", "two", "two");
$num = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
上記2つの配列があったとして、これを$numに合わせてinsertする項目数を変更するという動作を実現したいです。
具体的には(間違っているがやりたいイメージ)
$hogeの値は左から順に取っていって
"one"が選択されたら
$db = new PDO('mysql:host=localhost;dbname=mybd;charset=utf8', 'root', 'admin');
$stmt = $db->prepare("insert into table values(:hoge, :num)");
$stmt->execute(array(":hoge" => $hoge, ":num" => $num));
:numには1が入る
"two"が選択されたら
$stmt = $db->prepare("insert into table values(:hoge, :num1, :num2)");
:num1には2が入り、:num2には3が入る
"three"には上記同様に:num1,:num2,:num3となり
4,5,6が入る
処理後のテーブルのイメージ
hoge num
one 1
two 2, 3
three 4, 5, 6
two 7, 8
two 9, 10
このような、前の処理で取った値の次の値からとり処理していくようなことは可能でしょうか。
またできるのであればどういった処理になるのかも教えていただきたいです。
上記が不可能であれば
$numを3つに分け、
oneの値専用の
array("1", "2" , "4", "7", "9");
twoの値専用
array("3", "5", "8", "10");
そしてthree専用の
"6";
みたいに分け、
tableのカラム名もnum1,num2,num3という風に分けて
hoge num1 num2 num3
one 1
two 2 3
three 4 5 6
two 7 8
two 9 10
といった感じにできるかを教えていただきたいです。
発生している問題・エラーメッセージ
・使った値の情報を保存して次の値をとるという方法がわからない ・$hogeの値に合わせて、どのようにinsert文を書けばいいのかがわからない
試したこと
php
1foreach(array_map(null, $hoge, $num) as [$val1, $val2]){ 2 if(print $hoge == "one"){ 3 $stmt = $db->prepare("insert into table values(:hoge, :num)"); 4 $stmt->execute(array(":hoge" => $hoge, ":num" => $num)); 5 }else if(print $hoge == "two"){ 6 //two以降での処理がわからず 7 } 8}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/02 04:09
2021/02/02 04:18
2021/02/02 04:26
2021/02/02 04:52
2021/02/02 05:05
2021/02/03 02:07