我需要有关将值插入不同行的单个列的方法的帮助。
现在,我有一个内爆阵列给我一个像这样的值:
('12','13','14')
这些数字是我希望插入数据库的新ID 我用来破坏数组的代码是这样的:
$ combi =“('”。implode(“','”,$ box)。“')”; //其中$ box是初始数组
我计划使用的查询卡在这里:
mysql_query(“ INSERT INTO
studentcoursedetails
(studentID
) VALUES
一个选项是重复这个,但我不能,因为数组会循环;可能有3个ID,可能有20个 循环似乎不对。任何帮助将不胜感激。
答案 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函数的变体。