Я пытаюсь узнать, как использовать PDO, и мне нужна помощь в понимании чего-то.
Я продолжаю читать, что одним из самых больших преимуществ использования PDO является то, что он намного эффективнее, чем mysql_*
при mysql_*
подобных запросов снова и снова. Мне нужно сделать запрос точно таким же, за исключением того, что связанные параметры меняются каждый раз (но структура запроса такая же). Итак, вот мой вопрос:
Должен ли я позвонить PDO::prepare()
один раз, а затем в мой цикл call execute()
(передать массив параметров), или мне нужно вызывать PDO::preprare()
каждый раз, когда цикл выполняется?
Благодаря!
Прямо из документов:
Вызов PDO :: prepare () и PDOStatement :: execute () для операторов, которые будут выдаваться несколько раз с разными значениями параметров, оптимизирует производительность вашего приложения, позволяя водителю согласовывать кеширование клиентов и / или серверов в плане запроса и метаинформации и помогает предотвратить атаки SQL-инъекций, устраняя необходимость вручную указывать параметры.
Поэтому вы вызываете только один раз и один раз вызываете выполнение внутри цикла.
Пример из документов:
<?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(); ?>