从循环中保存数组内的数据

时间:2015-01-30 07:35:59

标签: 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_' + $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]')");

所以,如果我买了2件物品,我可以这样展示:

项目:球拍,勺子

项目编号:d67,t87

价格:4500,3789

所以当我只买一件商品时使用。

4 个答案:

答案 0 :(得分:0)

使用多维数组保存项目,以便在循环时不覆盖值。

 $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];
    } 

当插入SQL时,在语句周围使用foreach循环。

类似的东西:

foreach($dataset as $item){
    $sql = mysqli_query($conexion_temporal,"INSERT INTO transacciones (item_name, item_number, payment_status ,mc_gross) VALUES (".$item['item_name'].", ".$item['item_number'].",".$payment_status.",".$item['mc_gross'].")");
}

答案 1 :(得分:0)

array_keys

$keys = array_keys($dataset);

$str = ''.
foreach($dataset as $k => $v){
$str .= '\''.$v.'\'';
}
$presql = '"INSERT INTO transacciones ('.implode(',',$keys).')VALUES('.$str.')';

$sql = mysqli_query($presql);

答案 2 :(得分:0)

$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");

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

答案 3 :(得分:0)

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];
} 

与&#34;,#34;内爆每个元素:

$item_name = implode(",",$dataset['item_name']);
$item_number = implode(",",$dataset['item_number']);
$mc_gross = implode(",",$dataset['mc_gross']);

在插入查询中使用该implode字符串,如:

$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在评论中描述的概念