插入数值数组

问题描述:

我有一个数值可变的数组。插入数值数组

是否有一个更有效率或更好的方式将它们插入到我的数据库中,除了一个循环内部的查询?

this site,有一个很好的示例MySQL的多插入查询。这有效的SQL来

INSERT INTO [table] 
VALUES 
(row1), 
(row2), 
... 

根据要求:一个PHP代码片段:

$query="INSERT INTO mytable\nVALUES\n (".$values[0].")"; 
array_shift($values); 
foreach($values as $value) { 
    $query .= ",(".$value.")"; 
} 
+0

Hrmmm如果这些值是动态的。可以是1插入。可能是30. – ian 2009-08-27 17:20:07

+0

有些想象力......你可以创建一个你喜欢的大型查询。 – xtofl 2009-08-27 17:24:14

如果您使用的数据库允许多个值插入,那么您可以创建一个多插入语句并将其发送到数据库 - 一个连接一个命令来执行多个插入。

如果你不能做多个插入 - (因为MSSQL不允许) - 那么我认为你卡住了。

+0

是的MySQL。这不是一个只是好奇的问题。谢谢。 – ian 2009-08-27 17:15:21

以我的经验多行插入的处理速度比单行插入同等数量的更快MUCH,如果您一次插入大量数据,那么这是一个好方法。我已经观看了使用这种方法将输入数千行数据的过程从5-10分钟精简到几秒钟。至于代码部分,我一直使用implode()来连接字段&的数组。没有理由你不能做同样的行数据,你只需要能够确定哪些字段需要引用,转义等。

为了参数的缘故,假设$行是一个正确的数组格式化的SQL值...

$sql = "INSERT INTO `table` VALUES (" . implode("), (", $rows) . ")"; 

您可以应用类似的东西来组装单个字段,如果您需要的话。