php - 如何使用 CodeIgniter 框架从数组中插入多行?

标签 php mysql codeigniter insert bulkinsert

我正在使用插入命令通过 PHP 将大型数据集传递到 MySQL 表中,我想知道是否可以通过查询一次插入大约 1000 行,而不是将每个值附加在一英里的末尾 -长字符串,然后执行它。我正在使用 CodeIgniter 框架,因此我也可以使用它的功能。

最佳答案

在 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() 来分配值子句到外部数组。

关于php - 如何使用 CodeIgniter 框架从数组中插入多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35398821/

相关文章:

php - MySQL 我需要使用什么样的查询

javascript - 使用 AJAX 在 PHP 页面上动态显示 SQL 查询

mysql - MySQL数据库在哪里存储数据?

javascript - 使用 jquery 的 CodeIgniter 动态输入并插入到数据库

php - 嵌套 mysql 查询在 codeigniter 中不起作用

php - 将数组值插入数据库时​​出错

php - 更改 img 宽度的最佳方法是什么 - 使用 css 输出或 php?

javascript - x-editable 的成功回调不起作用

php - 如果与字符串相比,如何将数组元素移动到顶部?

PHP fatal error : Class 'Zend\Mvc\Application' not found