如何使用插入一个进程,其中行不是一个

时间:2016-01-07 18:28:17

标签: php mysql pdo

我有这样的数组:

$array = array("AAA,http://aaa.com,bbb,http://bbb.com,ccc,http://ccc.com");

如何获取此数组并插入数据库,如下所示:

No name url
1. AAA. Http://aaa.com
2. BBB. Http://bbb.com
3. CCC. Http://ccc.com

使用PHP和MySQL。

谢谢。

1 个答案:

答案 0 :(得分:0)

在MySQL中组装一个包含多行的INSERT语句要比每行一个INSERT语句快得多。

那就是说,听起来你可能会遇到PHP中的字符串处理问题,这实际上是一个算法问题,而不是语言问题。基本上,在处理大字符串时,您希望尽量减少不必要的复制。首先,这意味着您要避免连接。构建大字符串的最快和最有效内存的方法,例如在一个字符串中插入数百行,就是利用implode()函数和数组赋值。

    $sql = array(); 
foreach( $data as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));

这种方法的优点是你不会复制和重新复制到目前为止用每个连接组装的SQL语句;相反,PHP在implode()语句中执行此操作一次。这是一个很大的胜利。

如果你有很多列放在一起,并且一个或多个列很长,你也可以构建一个内部循环来做同样的事情,并使用implode()将values子句赋值给外部数组。

请尝试祝你好运