将数组拆分为mysql php中的单独列

时间:2015-04-03 22:28:52

标签: php mysql

我是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";

3 个答案:

答案 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);

See details here

所以,在你的情况下:

INSERT INTO order_list (order_id) VALUES (123), (456)

如果它是一个整数自动增量并且是数据库中该表的主键,我们可以避免手动增加“id”。

我希望我已经说清楚了。 此致