php - 如何在不同的行中插入来自 for / foreach 的数据?
问题描述
我有以下交易:
Array
(
[item_name1] => Battleflied 3
[item_number1] => 3
[quantity1] => 1
[mc_gross_1] => 29.00
[item_name2] => PHP BOOK
[item_number2] => 4
[quantity2] => 1
[mc_gross_2] => 19.00
[num_cart_items] => 2
)
通过使用 afor
我从中检索某些值Array
并将它们分配给我自己的变量
for($i = 1;$i <= $_POST['num_cart_items'] ;$i++){
$item_number= intval($_POST['item_number' . $i]);
$item_quantity= intval($_POST['quantity' . $i]);
$item_mc_gross= intval($_POST['mc_gross_' . $i]);
printf("DEBUG: item:%d quantity:%d price:%d<br>", $item_number, $item_quantity, $item_mc_gross);
}
打印以下结果:
DEBUG: item:3 quantity:1 price:29
DEBUG: item:4 quantity:1 price:19
从 an 中恢复/获取值的另一种方法Array
是通过以下方式使用 a foreach
:
$i = 1;
$cart_items = array();
while(isset($_POST['item_number' . $i])){
$item_number = isset($_POST['item_number' . $i]) ? $_POST['item_number' . $i] : '';
$item_name = isset($_POST['item_name' . $i]) ? $_POST['item_name' . $i] : '';
$quantity = isset($_POST['quantity' . $i]) ? $_POST['quantity' . $i] : '';
$mc_gross = isset($_POST['mc_gross_' . $i]) ? $_POST['mc_gross_' . $i] : 0;
$current_item = array(
'item_number' => $item_number,
'item_name' => $item_name,
'quantity' => $quantity,
'mc_gross' => $mc_gross
);
array_push($cart_items, $current_item);
$i++;
}
foreach($cart_items as $item){
echo $item['item_number'];
echo '<br><br>';
echo $item['item_name'];
echo '<br><br>';
echo $item['mc_gross'];
}
在使用 afor
和使用foreach
你能告诉我如何在不同的行中插入具有 for / foreach 的数据,如下所示:
id_transaction (primary) id_product quantity price
....... 3 1 19.00
....... 4 1 29.00
我正在使用 MySQLi 面向对象的预处理语句
$stmt = $con->prepare("INSERT INTO transaction (id_product, quantity, price) VALUES (?,?,?)");
$stmt->bind_param("...",$...);
$stmt->execute();
解决方案
使用第二种方法(我认为生成数组要干净得多),您可以执行以下操作:
$stmt = $con->prepare("INSERT INTO transaction (id_product, quantity, price) VALUES (?,?,?)");
foreach($cart_items as $item){
$stmt->bind_param("iii", $item['item_number'], $item['quantity'], $item['mc_gross']);
$stmt->execute();
}
使用您的第一种方法,您可以执行以下操作:
$stmt = $con->prepare("INSERT INTO transaction (id_product, quantity, price) VALUES (?,?,?)");
for($i = 1;$i <= $_POST['num_cart_items'] ;$i++){
$stmt->bind_param("iii", $_POST['item_number' . $i], $_POST['quantity' . $i], $_POST['mc_gross_' . $i]);
$stmt->execute();
}
推荐阅读
- android - 使用 MainActivity.java 文件和 Window.java 文件创建一个窗口 HelloWorld 应用程序
- jwt - 基于令牌的身份验证:将路由限制为特定用户
- node.js - Puppeteer chrome 允许多个文件下载
- mongodb - 副本集重新配置在 mongo 中不起作用
- javascript - lodash.differenceBy 在香草 JavaScript 中?
- python - Scipy稀疏矩阵行广播
- cucumber - 是否可以从 JSON 文件传递 Cucumber 功能中的参数值?
- reactjs - ReactNative Redux 导航道具未更新
- java - 改造 2 类文件问题
- html - 如何在reactjs中将插入符号位置放在contentEditable div的末尾?