8

我有一个复选框和值表,如果用户选择一个复选框,他们会在一个名为 checkHW 的数组中选择 id 的值,为简单起见,代码如下所示:

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

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

用于测试的回显查询:

"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);}

我希望对某人有所帮助,并感谢你们的帮助!

4

3 回答 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);

这是将要提交的内容:

INSERT INTO table (id, type) VALUES (1, 'type'), (2, 'type'), (3, 'type'), (4, 'type')
于 2012-09-14T19:18:46.073 回答
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)

希望这有帮助。

于 2012-09-14T19:18:09.507 回答
0

两个查询完全不同

insert into table('id1,id2','type')将插入单行

id1,id2 | 类型

然而

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

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

将插入两行

id1 | 类型
id2 | 类型

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

于 2012-09-14T19:16:12.560 回答