我需要将数据值中的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')");
?>
答案 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
不是数组 - 它是一个数组键(string
或integer
),因此没有任何内容可以崩溃。
不是将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);
}
?>