«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как передать параметры массива и использовать предложение LIMIT с PDO

Как передать параметры массива и использовать предложение LIMIT с PDO

Опубликовано 8 ноября 2024 г.
Просматривать:340

How to Pass Array Parameters and Use LIMIT Clause with PDO

Передача параметров массива и использование предложения LIMIT с PDO

При работе с запросами к базе данных может быть полезно передать массив параметров в оператор PDO с использованием предложения LIMIT. Однако это может быть сложно при использовании метода связыванияParam для установки отдельных параметров.

Дилемма

Проблема возникает потому, что предложение LIMIT требует привязки определенных числовых значений. , а метод выполнения ожидает массив именованных параметров. Эта несовместимость препятствует одновременному использованию обоих подходов.

Решение проблемы

Решение заключается в отключении настройки PDO::ATTR_EMULATE_PREPARES по умолчанию. Если этот параметр включен, PDO внутренне генерирует динамический SQL и цитирует значения, по сути, имитируя подготовленные операторы. Однако такое поведение по умолчанию мешает передаче именованных параметров.

Отключение эмулированной подготовки

При установке для PDO::ATTR_EMULATE_PREPARES значения false с помощью метода setAttribute поведение по умолчанию отключается. . Это позволяет PDO использовать фактически подготовленные операторы, обеспечивая привязку именованных параметров, при этом используя предложение LIMIT.

Пример использования

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :limit1, :limit2";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(':id' => $id, ':limit1' => $limit1, ':limit2' => $limit2)); // Works!

Аспекты производительности

Эмулированные подготовки используются по умолчанию в MySQL для повышения производительности. Отключение эмулируемой подготовки может немного снизить производительность, но обеспечивает большую гибкость привязки параметров.

Дополнительные ресурсы

Для получения дополнительной информации по этой теме обратитесь к следующим ресурсам:

  • [PDO MySQL: используйте PDO::ATTR_EMULATE_PREPARES или нет?](https://stackoverflow.com/questions/3273325/pdo-mysql-use-pdo-attr-emulate-prepares-or-not)
Заявление о выпуске Эта статья перепечатана по адресу: 1729678132. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3