(PHP 5 >= 5.1.0, PHP 7, PHP 8)
pg_prepare — Посылает запрос на создание параметризованного SQL выражения и ждёт его завершения
pg_prepare() создаёт заготовку SQL выражения на сервере для последующего запуска функциями pg_execute() или pg_send_execute(). Это позволяет многократно выполнять единожды созданные запросы с различными параметрами. pg_prepare() поддерживается PostgreSQL версии 7.4 и выше. Функция не будет работать c серверами ранних версий.
Функция создаёт заготовку SQL запроса с названием stmtname
и телом query
, которое должно содержать одно
SQL выражение. stmtname
может быть пустой строкой,
тогда будет создана безымянная заготовка. Если какая-либо безымянная
заготовка уже определена, она будет заменена на новую автоматически.
В остальных случаях совпадение имён новой и существующей в данной сессии
заготовок приведёт к ошибке. Если в query
будут передаваться параметры, то они заменят псевдопеременные
$1, $2 и т.д. при передаче запроса.
Подобные заготовки запросов также можно делать с помощью SQL-команды
PREPARE
(но pg_prepare()
более гибкая, так как не требует строгой типизации своих параметров).
Важно отметить, что в PHP нет функций для удаления подготовленных
SQL-выражений, для этого используйте команду SQL
DEALLOCATE
.
connection
Экземпляр PgSql\Connection.
Если connection
не указано, используется соединение по умолчанию. Соединение по умолчанию - это последнее соединение, выполненное с помощью функций pg_connect()
или pg_pconnect().
Начиная с версии PHP 8.1.0, использование соединения по умолчанию устарело.
stmtname
Имя создаваемой заготовки. Должно быть уникальным в пределах сессии. Если задана пустая строка, будет создано безымянное SQL выражение. При этом оно перезапишет уже существующее безымянное выражение, определённое ранее.
query
Параметризованный SQL-запрос. Должен содержать только одно выражение (несколько выражений разделённых точкой с запятой не поддерживаются). Если в запрос будут передаваться параметры, то они заменят псевдопеременные $1, $2 и т.д.
Экземпляр PgSql\Result в случае успешного выполнения или false
в случае возникновения ошибки.
Версия | Описание |
---|---|
8.1.0 | Возвращает экземпляр PgSql\Result; ранее возвращался ресурс (resource). |
8.1.0 |
Параметр connection теперь ожидает экземпляр PgSql\Connection; ранее ожидался ресурс (resource).
|
Пример #1 Пример использования pg_prepare()
<?php
// Подключение к базе данных "mary"
$dbconn = pg_connect("dbname=mary");
// Подготовка запроса
$result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
// Запуск запроса на выполнение. Стоит отметить, что нет необходимости экранировать
// спецсимволы в строке "Joe's Widgets"
$result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));
// Запуск на выполнение того же запроса, но с другим параметром
$result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
?>