在 foreach 查询中添加第二个数组
Adding a second array into the foreach query
我有 2 个动态输入,其中后续字段的数量因表单而异,因此我使用数组来捕获字段输入。
目前,该脚本插入一个从先前查询中获取的自动递增 ID,并将每个数组元素的 product_id 插入到列中。
所以如果我有来自 product_ids[] 的两个输入(123 和 456),它们将像这样进入 table:
ID|product_id
01|123
01|456
我也在尝试在相同的 table 和列中获取 product_amount:
ID|product_id|product_amount
01|123|1
01|456|2
<input type="text" name="product_ids[]">
<input type="text" name="product_amounts[]">
目前这对于我拥有的两个输入之一来说工作正常。虽然我一辈子也想不出如何添加 product_amounts[] 字段。
$product_ids = array();
foreach($product_id as $p_id)
$product_ids[] = "(LAST_INSERT_ID(), '". $p_id ."')";
$product_ids = implode(", ", $product_ids);
$query = "INSERT INTO order_list (ID,product_id) VALUES $product_ids";
$result = mysqli_query($conn, $query);
我在 foreach 查询中尝试了 AND 运算符,但很快发现它不能那样工作。
编辑
$product_ids = implode(", ", $product_ids, $product_amounts);
$query = "INSERT INTO order_list (ID,product_id,product_amount) VALUES $product_ids";
string implode ( string $glue , array $pieces )
Source. You are passing three parameters to implode
, which is invalid. You need to pass the glue, which is the comma and an array. However, even if you fix this, your code will still be illogical (there should be no product amounts in an array called product_ids
) and unsafe due to a lack of prevention of SQL injection。不幸的是,您的代码也不愿意类型化。如果您只使用数字,那么它将 运行 这样,但您应该考虑使用准备好的语句。
我会分配一些时间在youtube上看一些教程。 1-2小时后,您将拥有足够的知识来解决您的问题。
我有 2 个动态输入,其中后续字段的数量因表单而异,因此我使用数组来捕获字段输入。
目前,该脚本插入一个从先前查询中获取的自动递增 ID,并将每个数组元素的 product_id 插入到列中。
所以如果我有来自 product_ids[] 的两个输入(123 和 456),它们将像这样进入 table:
ID|product_id
01|123
01|456
我也在尝试在相同的 table 和列中获取 product_amount:
ID|product_id|product_amount
01|123|1
01|456|2
<input type="text" name="product_ids[]">
<input type="text" name="product_amounts[]">
目前这对于我拥有的两个输入之一来说工作正常。虽然我一辈子也想不出如何添加 product_amounts[] 字段。
$product_ids = array();
foreach($product_id as $p_id)
$product_ids[] = "(LAST_INSERT_ID(), '". $p_id ."')";
$product_ids = implode(", ", $product_ids);
$query = "INSERT INTO order_list (ID,product_id) VALUES $product_ids";
$result = mysqli_query($conn, $query);
我在 foreach 查询中尝试了 AND 运算符,但很快发现它不能那样工作。
编辑
$product_ids = implode(", ", $product_ids, $product_amounts);
$query = "INSERT INTO order_list (ID,product_id,product_amount) VALUES $product_ids";
string implode ( string $glue , array $pieces )
Source. You are passing three parameters to implode
, which is invalid. You need to pass the glue, which is the comma and an array. However, even if you fix this, your code will still be illogical (there should be no product amounts in an array called product_ids
) and unsafe due to a lack of prevention of SQL injection。不幸的是,您的代码也不愿意类型化。如果您只使用数字,那么它将 运行 这样,但您应该考虑使用准备好的语句。
我会分配一些时间在youtube上看一些教程。 1-2小时后,您将拥有足够的知识来解决您的问题。