gpt4 book ai didi

php - PDO:在循环中调用 prepare() 的成本?

转载 作者:可可西里 更新时间:2023-11-01 07:31:20 24 4
gpt4 key购买 nike

我正在为我的网站编写一个数据库类,其中包含诸如 fetchOnefetchAll 之类的功能,这些功能可将查询准备、执行(+ 绑定(bind))和提取全部合而为一所以我不必每次都单独调用这些函数。我网站上的一些 cron 作业在一个循环内执行数千甚至数百万个查询。

使用我的类会导致循环的每次迭代都重新准备语句,还是 PDO 会“记住”查询已经准备好?这会显着影响性能吗?如果会的话,解决方案是只提供一个传递数据库实例的函数,并在循环?或者有更好的解决方案吗?

示例函数:

public function fetchOne($query, $params = array(), $fetchMode = PDO::FETCH_ASSOC)
{
$stmt = self::prepareExecute($query, $params);

$result = $stmt->fetch($fetchMode);
if (count($result) < 1)
$result = FALSE;

$stmt->closeCursor();
unset($stmt);
return($result);
}

最佳答案

您不希望多次“重新准备”同一个查询。这就是 prepare 语句的目的。您准备一次,绑定(bind)变量,然后只需切换变量的值并重新执行循环的每次迭代。

http://www.php.net/manual/en/pdostatement.bindparam.php

与其他方法相比,这样做会大大提高您的表现。

关于php - PDO:在循环中调用 prepare() 的成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9168562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com