前提・実現したいこと
WordPressでサイトを作成しています。
配列の入力項目を取得して
親テーブルにメインデータをINSERTしたした後
PRIMARY KEYのidを取得して
子テーブルにforeachで取り出した複数データを一回でINSERTしたいです。
わからないこと
・子テーブルの複数データを一括で入れたいのですが、
書き方は
$sql_box = $wpdb->prepare( "INSERT INTO $wpdb->application ( app_id, type, num, created_at ) values ( %d,%d,%d,%s )", $app_id, $type, $num, $today) values ( %d,%d,%d,%s )", $app_id2, $type2, $num2, $today2) values ( %d,%d,%d,%s )", $app_id3, $type3, $num3, $today3); $wpdb->query( $sql_box );
上記のようにvalues以降が増えていく認識で合ってますでしょうか。
・TIMESTAMPのプレースホルダは%sでしょうか。
・オートインクリメントのid取得はname(入力された名前)と日付で取得しようと思っていますが、これは一般的でしょうか。
$sql = $wpdb->prepare( "INSERT INTO $wpdb->table (name, kana, p_code, p_pref, p_address1, p_address2, tel, mail_address, created_at) values (%s, %s, %s, %s, %s, %s, %s, %s, %s)", $name, $kana, $p_code2, $p_pref2, $p_address3, $p_address4, $tel, $mail_address, $today); $wpdb->query( $sql ); //オートインクリメントのid取得 $id_sql = $wpdb->prepare("SELECT id FROM $wpdb->application WHERE name = %s, created_at = %s", $name, $today); $app_id = $wpdb->get_results($id_sql); $box = array(); $box = $_POST['box'];//配列 foreach ($cabinets as $type_key => $type) { foreach ($type as $num_key => $num) { $box_val .= '('.$app_id.','.$type.','.$num.','.$today.'),'; } } $sql_box = $wpdb->prepare( "INSERT INTO $wpdb->application ( app_id, type, num, created_at ) values ( %d,%d,%d,%s )", $cabinet_val); $wpdb->query( $sql_box );
<form> <select name="box[]" class="text"> <option value="0" selected>タイプ</option> <option value="1">1ドア</option> <option value="2">2ドア</option> <option value="3">3ドア</option> <option value="4">4ドア</option> </select> <select name="box[][]" class="text"> <option value="0" selected>個数</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> <input type="button" value="+" class="add pluralBtn"> <input type="button" value="-" class="del pluralBtn"> </form>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/17 07:07
2021/07/17 08:03
2021/07/17 08:49
2021/07/17 08:53