2012-09-14 164 views
5

我有复选框和值的表中,如果用户选择,他们选择在称为checkedHW为了简单起见阵列的ID的值的复选框,这是什么代码看起来像:在一列中插入多个值mysql?

$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');" 

,但我不è Xactly公司很清楚如何做,任何帮助将是美好:)

其实,我解决了它使用:

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

我希望帮助别人,并感谢你们的帮助!

+0

我想'id'数据类型为int类型。 – diEcho

+0

我刚刚添加了一个int cast,它只为第一个值插入了一行 – bubbles

回答

6

你可以做这样的事情:

$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')
+0

我能够在不使用implode的情况下解决它,但感谢您的帮助! – bubbles

0

两个查询是完全不同的

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

ID1,ID2 |键入

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

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

将插入两行

ID1 |类型
id2 |键入

因此,如果您IDint类型,那么你不能运行第一查询

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) 

希望得到这个帮助。