如何在 array_combine 中传递 3 个参数,这可能吗?
how to Pass 3 arguments in array_combine, is that possible?
i 有三个变量 ($product_id, $size_id, $quantity) 从 "form" 得到并插入 pending_order table.So i使用 array_combine 函数组合三个变量,而不是使用 for each 循环插入多条记录。但它显示错误
"Warning: array_combine() expects exactly 2 parameters, 3 given".
所以我完全卡住了,有没有其他方法可以将这三个变量传递到数组中,而不是使用每个循环来插入记录。
<form method="post" action="">
<input type="hidden" name="ip_address" value="<?php echo $ip_address; ?>">
<input type="hidden" name="product_id[]" value="<?php echo $product_id; ?>">
<input type="hidden" name="size_id[]" value="<?php echo $size_id; ?>">
<input type="hidden" name="quantity[]" value="<?php echo $quantity; ?>" >
<input type="submit" name="submit" value="Confirm Your Order">
</form>
<?php
if (isset($_POST['submit'])) {
$product_id = $_POST['product_id'];
$size_id = $_POST['size_id'];
$ip_address = $_POST['ip_address'];
$quantity = $_POST['quantity'];
$array = array_combine($product_id, $size_id, $quantity);
foreach ($array as $h => $v) {
$insert_pending = "INSERT INTO pending_orders
(cus_id,product_id,size_id,quantity,ip_address) VALUES
('$cus_id','$h','$v','$quantity','$ip_address')";
$run2 = mysqli_query($con, $insert_pending);
}
if($run2===true){
echo "<script>window.open('thanku.php','_self')</script>";
}else{
echo "<script>alert('Sorry, Try Again')</script>";
}
}
您可以只循环遍历其中一个数组,使用该数组中的索引访问其他数组中的相应值:
foreach ($product_id as $index => $h) {
$v = $size_id[$index];
$q = $quantity[$index];
$insert_pending = "INSERT INTO pending_orders
(cus_id,product_id,size_id,quantity,ip_address) VALUES
('$cus_id','$h','$v','$q','$ip_address')";
$run2 = mysqli_query($con, $insert_pending);
}
请注意,$run2
将仅具有上次 INSERT
查询的状态。因此,如果除了最后一个以外,它们都失败了,您将一无所知。您可能想尝试在查询后将其添加到循环中:
if (!$run2) break;
然后在您的错误消息中您可以指出哪个插入失败,例如
echo "<script>alert('Insert failed for id $cus_id on data $h, $v, $q')</script>";
i 有三个变量 ($product_id, $size_id, $quantity) 从 "form" 得到并插入 pending_order table.So i使用 array_combine 函数组合三个变量,而不是使用 for each 循环插入多条记录。但它显示错误
"Warning: array_combine() expects exactly 2 parameters, 3 given".
所以我完全卡住了,有没有其他方法可以将这三个变量传递到数组中,而不是使用每个循环来插入记录。
<form method="post" action="">
<input type="hidden" name="ip_address" value="<?php echo $ip_address; ?>">
<input type="hidden" name="product_id[]" value="<?php echo $product_id; ?>">
<input type="hidden" name="size_id[]" value="<?php echo $size_id; ?>">
<input type="hidden" name="quantity[]" value="<?php echo $quantity; ?>" >
<input type="submit" name="submit" value="Confirm Your Order">
</form>
<?php
if (isset($_POST['submit'])) {
$product_id = $_POST['product_id'];
$size_id = $_POST['size_id'];
$ip_address = $_POST['ip_address'];
$quantity = $_POST['quantity'];
$array = array_combine($product_id, $size_id, $quantity);
foreach ($array as $h => $v) {
$insert_pending = "INSERT INTO pending_orders
(cus_id,product_id,size_id,quantity,ip_address) VALUES
('$cus_id','$h','$v','$quantity','$ip_address')";
$run2 = mysqli_query($con, $insert_pending);
}
if($run2===true){
echo "<script>window.open('thanku.php','_self')</script>";
}else{
echo "<script>alert('Sorry, Try Again')</script>";
}
}
您可以只循环遍历其中一个数组,使用该数组中的索引访问其他数组中的相应值:
foreach ($product_id as $index => $h) {
$v = $size_id[$index];
$q = $quantity[$index];
$insert_pending = "INSERT INTO pending_orders
(cus_id,product_id,size_id,quantity,ip_address) VALUES
('$cus_id','$h','$v','$q','$ip_address')";
$run2 = mysqli_query($con, $insert_pending);
}
请注意,$run2
将仅具有上次 INSERT
查询的状态。因此,如果除了最后一个以外,它们都失败了,您将一无所知。您可能想尝试在查询后将其添加到循环中:
if (!$run2) break;
然后在您的错误消息中您可以指出哪个插入失败,例如
echo "<script>alert('Insert failed for id $cus_id on data $h, $v, $q')</script>";