flu*_*rry 4 php mysql pdo prepared-statement
我正在为我的网站编写一个数据库类fetchOne,fetchAll其中包括准备,执行(+绑定)和获取查询等功能,因此我不必每次都单独调用这些函数.我网站上的一些cron作业在循环内执行数千甚至数百万个查询.
使用我的类会导致语句在循环的每次迭代中重新准备,还是PDO"记住"查询已经准备好了?这会对性能产生重大影响吗?如果可以的话,解决方案是提供一个传递数据库实例并执行类似$db->getDb()->prepare($query);循环之外的功能的解决方案吗?或者有更好的解决方案吗?
功能示例:
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);
}
Run Code Online (Sandbox Code Playgroud)
你不希望多次"重新准备"同一个查询.这是准备声明的目的.你准备一次,绑定变量,然后你只需切换变量的值,然后重新执行循环的每次迭代.
http://www.php.net/manual/en/pdostatement.bindparam.php
这样做会大大提高你的表现.
| 归档时间: |
|
| 查看次数: |
1638 次 |
| 最近记录: |