首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为INSERT INTO xxx () VALUES (),...数量可变的记录的数量?

问为INSERT INTO xxx () VALUES (),...数量可变的记录的数量?
EN

Stack Overflow用户
提问于 2013-05-17 15:10:21
回答 2查看 604关注 0票数 0

我需要频繁地将一堆记录插入到表中。我不是一个接一个地插入它们,而是使用insert INTO ()、...成批地插入它们,其中每个批中的记录数不是固定的。有时是20条记录,但有时是56条记录,等等。

到目前为止,我只能使用预定数量的参数构建预准备语句,比如这些examples。

那么如何为"INSERT INTO xxx () VALUES (),...“这样的查询构建预准备语句呢?其中值后的记录数不是预先确定的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-17 15:21:48

我认为你想要使用这样的东西:

代码语言:javascript
复制
<?php
// pdo example

$sql = 'INSERT INTO table (field1, field2, field3) VALUES (:value1, :value2, :value3)';

// $dbh is pdo connection
$insertTable = $dbh->prepare($sql);

$countArray = count($array);
$i = 0;

while ($i < $countArray) {
   $insertTable->bindParam(':value1', $array['value1'][$i], PDO::PARAM_INT); // if value is int
   $insertTable->bindParam(':value2', $array['value2'][$i], PDO::PARAM_STR); // if value is str
   $insertTable->bindParam(':value3', $array['value3'][$i], PDO::PARAM_STR);
   $insertTable->execute();

   $i++;
}

?>
票数 1
EN

Stack Overflow用户

发布于 2013-06-06 14:32:06

在这里我发现了一些有趣的东西:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

参见“示例#4使用多插入SQL减少往返次数”:

此外,还要考虑使用MySQL多插入SQL语法进行插入。例如,与上面显示的预准备语句相比,多路插入需要的服务器和客户端之间的往返次数较少。

代码语言:javascript
复制
<?php
if (!$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3), (4)")) {
    echo "Multi-INSERT failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
?>

在使用microtime()进行了一些测试之后,在我看来,如果一次要插入相当多的记录(例如50条),那么使用多插入语法确实比使用准备好的语句更好。

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

https://stackoverflow.com/questions/16603409

复制
相关文章

相似问题

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