Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在进行相同的PDO查询(参数不断变化)时,我是每次调用prepare(),还是只调用一次?_Php_Mysql_Pdo_Prepared Statement - Fatal编程技术网

Php 在进行相同的PDO查询(参数不断变化)时,我是每次调用prepare(),还是只调用一次?

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

我正在努力学习如何使用PDO,我需要帮助理解一些东西

我一直在读到,使用PDO的最大好处之一是,在反复进行类似查询时,它比
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();
?>