SQL - 将多个行值插入单个列

时间:2011-01-24 12:53:51

标签: php sql arrays insert implode

我需要有关将值插入不同行的单个列的方法的帮助。

现在,我有一个内爆阵列给我一个像这样的值:

  

('12','13','14')

这些数字是我希望插入数据库的新ID 我用来破坏数组的代码是这样的:

  

$ combi =“('”。implode(“','”,$ box)。“')”; //其中$ box是初始数组

我计划使用的查询卡在这里:

  

mysql_query(“ INSERT INTO studentcoursedetailsstudentID VALUES

一个选项是重复这个,但我不能,因为数组会循环;可能有3个ID,可能有20个 循环似乎不对。任何帮助将不胜感激。

6 个答案:

答案 0 :(得分:3)

要在表中插入多个值,您应该使用(value1),(value2)语法:

$combi = "('".implode("'), ('",$box)."')";

PS:此功能称为行值构造函数,自SQL-92起可用

答案 1 :(得分:2)

你能不能做这样的事情:

for($x = 0; $x < count($box); $x++)
{
  mysql_query("INSERT INTO studentcoursedetails (studentID) VALUES ($box[$x]);
}

这将直接在你的数组上工作,为$ box中的每个值插入一个新行,同时也防止需要将数组内插到逗号分隔的字符串

将id作为逗号分隔的字符串存储可能最初看起来像一个简单的模型,但从长远来看,这将使您在尝试使用非规范化数据库时不会遇到麻烦。

答案 2 :(得分:2)

某些版本的sql允许复合插入:

insert into studentcoursedetails (studentid) values
   (1),
   (2),
   (3),

答案 3 :(得分:2)

如果您使用的是MySQL,则可以在一个句子中插入多个值:

sql> insert into studentcoursedetails (studentID)
   > values (('12'), ('13'), ('14'));

所以,你只需要用PHP 构建那个字符串就可以了。

答案 4 :(得分:1)

您仍然可以通过implode创建语句。只是不要使用VALUES;改用SELECT

$combi = " ".implode(" UNION ALL SELECT ",$box)." "; // Where $box is the initial array
mysql_query("INSERT INTO studentcoursedetails (studentID) SELECT " . $combi)

SELECT .. union可以跨多个dbms移植。

注意ID - 如果是数字,请不要引用它们。

答案 5 :(得分:0)

检查是否存在将对数组参数进行操作的mysql_query函数的变体。