Php SQL-将多行值插入到单个列中
我需要一种将值插入到不同行的单个列中的方法的帮助 现在,我有一个内爆数组,它给了我如下值: (‘12’、‘13’、‘14’) 这些数字是我希望插入DB的新ID。Php SQL-将多行值插入到单个列中,php,sql,arrays,insert,implode,Php,Sql,Arrays,Insert,Implode,我需要一种将值插入到不同行的单个列中的方法的帮助 现在,我有一个内爆数组,它给了我如下值: (‘12’、‘13’、‘14’) 这些数字是我希望插入DB的新ID。 我用于阵列内爆的代码如下: $combi=“(”。内爆(“,”,$box)。“)”;//其中$box是初始数组 我计划使用的查询被卡在这里: mysql\u查询(插入到studentCoursedDetails(studentID)值 一个选项是重复这个,但我不能,因为数组将循环;可能有3个ID,可能有20个。 循环似乎不正确。任何帮助
我用于阵列内爆的代码如下: $combi=“(”。内爆(“,”,$box)。“)”;//其中$box是初始数组 我计划使用的查询被卡在这里: mysql\u查询(插入到
studentCoursedDetails
(studentID
)值
一个选项是重复这个,但我不能,因为数组将循环;可能有3个ID,可能有20个。循环似乎不正确。任何帮助都将不胜感激。您不能这样做吗:
for($x = 0; $x < count($box); $x++)
{
mysql_query("INSERT INTO studentcoursedetails (studentID) VALUES ($box[$x]);
}
($x=0;$x
{
mysql_查询(“插入studentCoursedDetails(studentID)值($box[$x]);
}
这将直接作用于数组,为$box中的每个值插入新行,还可以防止将数组内爆为逗号分隔的字符串
将ID存储为逗号分隔的字符串起初可能看起来像一个简单的模型,但从长远来看,这将在尝试使用非标准化数据库时给您带来无尽的麻烦。要在表中插入多个值,您应该使用(value1),(value2)语法:
PS:此功能称为行值构造函数,从SQL-92开始就可用。您仍然可以通过内爆创建语句。只是不要使用值,而是使用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-如果它们是数字,请不要引用。检查是否有mysql_查询函数的变体可以对数组参数进行操作。一些sql版本允许复合插入:
insert into studentcoursedetails (studentid) values
(1),
(2),
(3),
如果您使用的是MySQL,您可以在一句话中插入多个值:
sql> insert into studentcoursedetails (studentID)
> values (('12'), ('13'), ('14'));
因此,您只需要在PHP中构建该字符串,就完成了。您应该使用一个循环和一个规范化的数据库。包含多个值的列不是规范化的。循环正是您应该如何解决这个问题的,请看,实际上cyberkiwi的建议更好,因为这只需要1 DB调用,而我的需要多少val阵列中存在UE。两者实现的功能完全相同,但cyberkiwis解决方案将在PHP和MySQL中创建更少的负载。Oracle是否已完成SQL-92的实现?SQL Server支持的值(..),(..)只是从2008年开始,我不认为他们会为此添加新的语法。在oracle中已经有两种方法可以做到这一点,我在这里找到了:
sql> insert into studentcoursedetails (studentID)
> values (('12'), ('13'), ('14'));