Php 在进行相同的PDO查询(参数不断变化)时,我是每次调用prepare(),还是只调用一次?
我正在努力学习如何使用PDO,我需要帮助理解一些东西 我一直在读到,使用PDO的最大好处之一是,在反复进行类似查询时,它比Php 在进行相同的PDO查询(参数不断变化)时,我是每次调用prepare(),还是只调用一次?,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,我正在努力学习如何使用PDO,我需要帮助理解一些东西 我一直在读到,使用PDO的最大好处之一是,在反复进行类似查询时,它比mysql\uquot更高效。我需要创建一个完全相同的查询,只是绑定参数每次都会更改(但查询的结构是相同的)。所以,我的问题是: 我应该调用PDO::prepare()一次,然后在我的循环调用execute()(传递参数数组),还是应该每次循环运行时调用PDO::prepare() 谢谢 文档中的右键: 调用PDO::prepare()和PDOStatement::execu
mysql\uquot
更高效。我需要创建一个完全相同的查询,只是绑定参数每次都会更改(但查询的结构是相同的)。所以,我的问题是:
我应该调用PDO::prepare()
一次,然后在我的循环调用execute()
(传递参数数组),还是应该每次循环运行时调用PDO::prepare()
谢谢 文档中的右键:
调用PDO::prepare()和PDOStatement::execute()来处理将多次使用不同参数值发出的语句,通过允许驱动程序协商查询计划和元信息的客户端和/或服务器端缓存来优化应用程序的性能,并通过消除手动引用参数的需要来帮助防止SQL注入攻击
因此,您只需在循环中调用prepare一次并调用execute
文档外示例:
<?php
/* Execute a prepared statement by passing an array of values */
$sql = 'SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();
$sth->execute(array(':calories' => 175, ':colour' => 'yellow'));
$yellow = $sth->fetchAll();
?>