Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将循环中的数据保存在数组中_Php_For Loop - Fatal编程技术网

Php 将循环中的数据保存在数组中

Php 将循环中的数据保存在数组中,php,for-loop,Php,For Loop,我需要将循环中的数据保存在数组中,以便插入数据库 代码如下: $dataset = array(); for ($i = 1; $i <= $_POST['num_cart_items']; $i++) { $dataset[item_name] = $_POST['item_name' + $i]; $dataset[item_number] =$_POST['item_number' + $i]; $dataset[mc_gross] =$_POST['mc_gross_' +

我需要将循环中的数据保存在数组中,以便插入数据库

代码如下:

$dataset = array();
 for ($i = 1; $i <= $_POST['num_cart_items']; $i++) {
 $dataset[item_name] = $_POST['item_name' + $i];
$dataset[item_number] =$_POST['item_number' + $i];
 $dataset[mc_gross] =$_POST['mc_gross_' + $i];
}  
因此,如果我买了两件物品,我可以这样展示:

$sql = mysqli_query($conexion_temporal,"INSERT INTO transacciones (item_name, item_number, payment_status ,mc_gross) VALUES ('$dataset[item_name]', '$dataset[item_number]','$payment_status','$dataset[mc_gross]')");
物品:球拍、汤匙

项目编号:d67、t87

价格:45003789


因此,当我只购买了1件物品时请使用。

使用多维数组保存物品,以免在循环时覆盖值

 $dataset = array();
     for ($i = 1; $i <= $_POST['num_cart_items']; $i++) {
     $dataset[$i]['item_name'] = $_POST['item_name' + $i];
    $dataset[$i]['item_number'] =$_POST['item_number' + $i];
     $dataset[$i]['mc_gross'] =$_POST['mc_gross_' + $i];
    } 

如果数字未存储为文本,则应删除该值周围的引号。

在foreach中使用多维用户,如:

$dataset = array();
 for ($i = 1; $i <= $_POST['num_cart_items']; $i++) {
 $dataset['item_name'][] = $_POST['item_name_'.$i];
$dataset['item_number'][] =$_POST['item_number_'.$i];
 $dataset['mc_gross'][] =$_POST['mc_gross_'.$i];
} 
在插入查询中使用该内爆字符串,如:

$sql = mysqli_query($conexion_temporal,"INSERT INTO transacciones (item_name, item_number, payment_status ,mc_gross) VALUES ('$item_name', '$item_number','$payment_status','$mc_gross')");

注意:请记住Shaiful Islam在评论中描述的概念

我认为当循环时,您覆盖了先前插入到数组中的值。您需要为$dataset使用多维数组。dataset为空,我将仅用于这3个元素,但如果您有多个项目,则只有最后一个项目将被保存,因为其他项目将被覆盖。我每个Cart只接收7个项目,您应该会收到错误。对于$dataset['item_name']之类的键,请使用'or'。并为每个迭代创建新索引,然后分配值。将虚拟付款状态键和值添加到数据集,稍后在数据库中更新。。。我想状态可能会随着时间的推移而改变。回显$\u POST['item\u name'+$i]的值,您得到了什么?字段名是什么?这就像项目名称1,项目名称2??项目名称、项目编号和mc_Grossin代替$_POST['item_name'+$i]你必须像$_POST['item_name'.$i]那样写,如果你的表单输入名称像项目名称1、项目名称2……它的支付宝和发送项目名称1、项目名称2等你必须更具体一点,否则人们帮不了你。使用echo$dataset;在for循环的}之后。它显示什么?
$dataset = '';
 for ($i = 1; $i <= $_POST['num_cart_items']; $i++) {
   $dataset .= "('" . $_POST['item_name'] . "',";
   $dataset .= "'" . $_POST['item_number'] . "',";
   $dataset .= "'" . $payment_status . "',"; // not sure where this one is coming from
   $dataset .= "'" . $_POST['mc_gross_'] . "')";
   if ($i != $_POST['num_cart_items']) $dataset .= ',';
}

$sql = mysqli_query($conexion_temporal,"INSERT INTO transacciones (item_name, item_number, payment_status ,mc_gross) VALUES $dataset");
$dataset = array();
 for ($i = 1; $i <= $_POST['num_cart_items']; $i++) {
 $dataset['item_name'][] = $_POST['item_name_'.$i];
$dataset['item_number'][] =$_POST['item_number_'.$i];
 $dataset['mc_gross'][] =$_POST['mc_gross_'.$i];
} 
$item_name = implode(",",$dataset['item_name']);
$item_number = implode(",",$dataset['item_number']);
$mc_gross = implode(",",$dataset['mc_gross']);
$sql = mysqli_query($conexion_temporal,"INSERT INTO transacciones (item_name, item_number, payment_status ,mc_gross) VALUES ('$item_name', '$item_number','$payment_status','$mc_gross')");