Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL-将多行值插入到单个列中_Php_Sql_Arrays_Insert_Implode - Fatal编程技术网

Php SQL-将多行值插入到单个列中

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个。 循环似乎不正确。任何帮助

我需要一种将值插入到不同行的单个列中的方法的帮助

现在,我有一个内爆数组,它给了我如下值:

(‘12’、‘13’、‘14’)

这些数字是我希望插入DB的新ID。
我用于阵列内爆的代码如下:

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