PHP PDO缓存

chhkpiq4  于 2023-08-02  发布在  PHP
关注(0)|答案(4)|浏览(118)

我一直在寻找这个问题的答案,但在任何地方都没有找到。对PDO::prepare()的调用是缓存的,还是我应该自己缓存结果,即如果我做了下面的事

function foo () {
  $handle = PDO::prepare(...);
  /* do stuff with the handle */
}

字符串
prepare()语句是否会被PDO缓存,以便快速检索第二个、第三个等。还是自己做比较好。

function foo() {
  static $handle = null;
  if (!$handle) {
    $handle = PDO::prepare(...);
  }
  /* do stuff with the handle */
}

ycl3bljg

ycl3bljg2#

两次对PDO::prepare()的后续调用(即使使用相同的SQL查询)应该返回两个不同的PDOStatement(或句柄),以避免冲突,特别是在您可能应用于它的先前绑定和当前绑定之间。用prepare()创建PDO语句的成本很低。您可能希望缓存的是从同一SQL查询返回的结果,无论是原始的还是由prepare()构建的,这是DBMS(例如MySQL)的功能,而不是PHP。

ha5z0ras

ha5z0ras3#

这取决于您的数据库驱动程序。在MySQL中,PDO默认会创建一个本地的预准备语句。如果要使用实际的查询缓存,可以禁用它。
如果必须重复执行相同的查询,那么是的,您需要保留该句柄。如果您使用的是模拟的预处理语句,那么这根本没有什么区别。

nhn9ugyo

nhn9ugyo4#

前一段时间我尝试做CPDO,它可以作为标准PDO使用

相关问题