首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用CodeIgniter框架从数组中插入多行?

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

Stack Overflow用户
提问于 2009-04-23 01:39:06
回答 10查看 250.6K关注 0票数 134

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

EN

回答 10

Stack Overflow用户

发布于 2012-03-21 20:41:05

CodeIgniter现在支持多个插入/批插入。

代码语言:javascript
复制
$data = array(
   array(
      'title' => 'My title' ,
      'name' => 'My Name' ,
      'date' => 'My date'
   ),
   array(
      'title' => 'Another title' ,
      'name' => 'Another Name' ,
      'date' => 'Another date'
   )
);

$this->db->insert_batch('mytable', $data);

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')
票数 63
EN

Stack Overflow用户

发布于 2009-04-23 01:59:31

您可以使用mysqli_stmt类准备插入一行的查询,然后迭代数据数组。类似于:

代码语言:javascript
复制
$stmt =  $db->stmt_init();
$stmt->prepare("INSERT INTO mytbl (fld1, fld2, fld3, fld4) VALUES(?, ?, ?, ?)");
foreach($myarray as $row)
{
    $stmt->bind_param('idsb', $row['fld1'], $row['fld2'], $row['fld3'], $row['fld4']);
    $stmt->execute();
}
$stmt->close();

其中'idsb‘是要绑定的数据类型(int、double、string、blob)。

票数 22
EN

Stack Overflow用户

发布于 2011-03-07 06:05:26

PHP 5中的mysqli是一个对象,它具有一些很好的函数,可以帮助您加快上述答案的插入速度:

代码语言:javascript
复制
$mysqli->autocommit(FALSE);
$mysqli->multi_query($sqlCombined);
$mysqli->autocommit(TRUE);

当插入许多行时关闭自动提交会大大加快插入速度,所以关闭它,然后执行上面提到的,或者只生成一个字符串(sqlCombined),它是由分号分隔的许多insert语句,多查询可以很好地处理它们。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/779986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档