前提
PHPでE-Commerceシステムを作っています。
Prepared Statementを使っているのですが、bind_param を使って配列に入ったデータをfor eachでデータベースのテーブルにINSERTする方法がわかりません。
実現したいこと
bind_param を使って配列に入ったデータをfor eachでデータベースのテーブルにINSERTしたい。
該当のソースコード
ここではCartに入っているデータを取得しています。
PHP
1$stmt_all_cart = $conn -> prepare('SELECT * FROM cart WHERE user_id = ?;'); 2$stmt_all_cart -> bind_param('i',$_SESSION["user_id"]); 3$stmt_all_cart -> execute(); 4$result_cart_prepare = $stmt_all_cart -> get_result(); 5$result_cart = $result_cart_prepare -> fetch_all(MYSQLI_ASSOC); 6 7mysqli_stmt_close($stmt_all_cart);
PHP
1if($result_cart){ 2 $stmt_order_items = $conn -> prepare('INSERT INTO order_items(quantity,product_id,order_id,price)VALUES(?,?,?,?);'); 3 foreach ($result_cart as $cart_Info){ 4 $stmt_order_items -> bind_param("iiid",$cart_Info['quantity'],$cart_Info['id'],$order_id,$cart_Info['price']); 5 $stmt_order_items -> execute(); 6 } 7 mysqli_stmt_close($stmt_order_items); 8 mysqli_stmt_close($stmt_orders); 9 }
試したこと
下記のように変更し試したりしてみましたが、できませんでした。
PHP
1if($result_cart){ 2 $stmt_order_items = $conn -> prepare('INSERT INTO order_items(quantity,product_id,order_id,price)VALUES(?,?,?,?);'); 3 foreach ($result_cart as $cart_Info){ 4 $stmt_order_items -> bind_param(str_repeat("iiid", count($result_cart)), ...$result_cart); 5 $stmt_order_items -> execute(); 6 } 7 mysqli_stmt_close($stmt_order_items); 8 mysqli_stmt_close($stmt_orders); 9 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/12 02:56