使用foreach将数组插入到单个MySQL raw中

时间:2016-09-29 08:55:52

标签: php mysql

我需要将数据值中的MySQL数据插入到单个raw中。我在下面尝试过代码,但是我收到错误:警告:implode():传入的参数无效 我怎么解决这个问题?或者有没有其他方法可以使用PHP将数组值插入MySQL中的单个raw?

<?php

foreach ($_POST['qty'] as $product_id => $qty) {
$product_id = implode(" ",$product_id);
$qty = implode(" ",$qty);
}
$q = mysqli_query($conn, "INSERT INTO product_order (product_id,qty) VALUES ('$product_id','$qty')");

?>

enter image description here

6 个答案:

答案 0 :(得分:0)

如果你想将数组发布到数据库然后使用php serialize函数。它最适合数组类型数据

    $serialized_data = serialize(array('Math', 'Language', 'Science'));  
echo  $serialized_data . '<br>';

答案 1 :(得分:0)

Implode函数第二个参数接受Array所以首先检查implode函数第二个参数是数组。

foreach ($_POST['qty'] as $product_id => $qty)

这一行说$product_id是关键,不是数组,所以内爆函数不起作用。

请提供$_POST['qty']转储

答案 2 :(得分:0)

试试这个:

<?php
 $product = [];
 $qtys = [];
if(!empty($_POST['qty'])){
foreach ($_POST['qty'] as $product_id => $qty) {
   array_push($product, $product_id);
   array_push($qtys, $qty);
}
 $qty_final = implode(',',$qtys);
 $product_id_final = implode(',',$product);
 $q = mysqli_query($conn, "INSERT INTO product_order (product_id,qty) VALUES ('$product_id_final','$qty_final')");
}

在db中保存逗号分隔值是非常糟糕的。

答案 3 :(得分:0)

你可以,

<?php
$product_data = isset(($_POST['qty'])? ($_POST['qty']: array();
if ( !empty($product_data) ){
    $sql = "INSERT INTO product_order (product_id, qty) VALUES ('".implode(", ", array_keys($product_data))."','".implode(", ", array_values($product_data))."')";
    $q = mysqli_query($conn, $sql);
}
?>

这应该有用。

但是在字段中保留逗号分隔列表并不是一件好事。您可以拥有一个新表,以便可以保持映射到哪些产品的顺序。

答案 4 :(得分:0)

这不是一个好主意。 - 这是一个非常糟糕的主意。

话虽如此。您的$product_id不是数组 - 它是一个数组键(stringinteger),因此没有任何内容可以崩溃。

不是将csv插入此表中,而是为每个id插入新行更好一点。

答案 5 :(得分:0)

试试这个:

<?php

$product_data = isset(($_POST['qty'])? ($_POST['qty']: array();

if ( !empty($product_data) ){

    $sql = "INSERT INTO product_order (product_id, qty) VALUES ('".implode(", ", array_keys($product_data))."','".implode(", ", array_values($product_data))."')";

    $q = mysqli_query($conn, $sql);

}
?>