我是php / mysql的新手,所以我希望你能忍受我! 此代码是较大脚本的一部分,但我认为这是帮助我进一步发展所需的关键部分。
$order_id = $_POST['order_ids'];
$order_ids = implode(",",$order_id);
<input type="text" name="order_ids[]" value="123">
<input type="text" name="order_ids[]" value="456">
$query = "INSERT INTO order_list (id,order_id) VALUES (LAST_INSERT_ID(),'$order_ids')";
我想得到:
id|order_id
10|123
10|456
而不是我现在得到的
id|order_id
10|123, 456
来自@Ido的代码似乎是开箱即用的,我还有一个字段输入我想添加到表中的列被称为&#34; amount&#34;这与order_id字段输入类似。
$order_amount = $_POST['order_amounts_field'];
$order_amounts = implode(",",$order_amount);
我尝试复制它并更改另一个,但很快意识到我必须在同一个查询中执行两个输入,以便将它们放在同一行:
$order_ids = array();
foreach($order_id as $id)
$order_ids[] = "(LAST_INSERT_ID(), '". $id ."')";
$order_ids = implode(", ", $order_ids);
$query = "INSERT INTO order_list (id,order_id) VALUES $order_ids";
答案 0 :(得分:0)
您明确地将ID组合成一个字符串并插入一行,以便结果有意义。
您需要遍历提交的每个ID并将它们附加到动态构建的INSERT查询中:
$query = "INSERT INTO order_list (id,order_id) VALUES ";
foreach ($_POST['order_ids'] as $order_id) {
$order_id = (int) $order_id; // sanitize numerical value
$query .= "(LAST_INSERT_ID(), $order_id),";
}
$query = rtrim($sql, ',');
这只是说明了一个概念。有多种方法可以做到这一点。请确保您对数据进行清理,因为示例代码非常不安全,因为它对SQL注入非常开放。
答案 1 :(得分:0)
$order_ids = array();
foreach($order_id as $id)
$order_ids[] = "(LAST_INSERT_ID(), '". $id ."')";
$order_ids = implode(", ", $order_ids);
$query = "INSERT INTO order_list (id,order_id) VALUES $order_ids";
答案 2 :(得分:0)
$ query =“INSERT INTO order_list(id,order_id)VALUES(LAST_INSERT_ID(),'$ order_ids')”;
在SQL中,如果要插入多行,则必须执行以下操作:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
所以,在你的情况下:
INSERT INTO order_list (order_id) VALUES (123), (456)
如果它是一个整数自动增量并且是数据库中该表的主键,我们可以避免手动增加“id”。
我希望我已经说清楚了。 此致