在MySQL中如何在一个列中插入多个值?

8

我有一个复选框和值的表格。如果用户选择了一个复选框,它将选择名为checkedHW的数组中的id的值。简单起见,以下是代码示例:

$ids = implode(',',arrayofids);

$sql = "insert into table(id, type) values($ids,type);
$db->query($sql);

测试用的 echo 查询:

"insert into table('id1,id2','type')

我想,如果我循环遍历这个查询,我就可以做到这一点:
"insert into table('id1','type');"

"insert into table('id2','type');"

但是我并不确定如何操作,希望能得到帮助:)

实际上我解决了这个问题,使用的方法是:

for($i=0;$i<count(arrayofids); $i++){
$sql = "insert into table(id,type) values(array[$i], 'type'";
$db->query($sql);}

我希望这可以帮助到某些人,感谢大家的帮助!

我认为 id 的数据类型是整型。 - xkeshav
我刚刚添加了一个int强制转换,但它只为第一个值插入了一行。 - bubbles
3个回答

7
您可以像这样做:
$base = 'INSERT INTO table (id, type) VALUES (';
$array = array(1, 2, 3, 4);
$values = implode(", 'type'), (", $array);
$query = $base . $values . ", 'type')";

$db->query($query);

这是要提交的内容:
插入到表格中 (id, type) 值为 (1, 'type'), (2, 'type'), (3, 'type'), (4, 'type')

我能够解决它,而不使用implode,但还是谢谢你的帮助! - bubbles

0

这两个查询完全不同

insert into table('id1,id2','type') 会插入单行数据

id1,id2 | type

insert into table('id1','type');"

insert into table('id2','type');"

将插入两行

id1 | 类型
id2 | 类型

因此,如果您的id列是int类型,则无法运行第一个查询


0
如果您有一系列的复选框,并希望将这些值插入到您的表中,您可以像这样循环遍历它们:
<?php

$values = array();

foreach ($_POST['field_name'] as $i => $value) {
    $values[] = sprintf('(%d)', $value);
}

$values = implode(',', $values);

$sql = "INSERT INTO `table_name` (`column_name`) VALUES $values";

这将为您提供类似于以下 SQL 查询:

INSERT INTO `table_name` (`column_name`) VALUES (1),(2),(3),(4)

希望这可以帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接