(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 серверами предыдущих версий.
Функция создает подготовленный запрос с названием stmtname
из строки query
, которая содержит одну команду.
Значение параметра stmtname
указывают как пустую строку ""
,
чтобы создать безымянный запрос, который автоматически заменяет предыдущий безымянный запрос;
в остальных случаях попытка назвать запрос именем, которое уже определили в текущей сессии,
вызовет ошибку. Параметры, которые передали при выполнении запроса,
указывают на обозначения $1
, $2
и т. д. в запросе query
.
Подготовленные для функции pg_prepare() запросы создают также SQL-командой
PREPARE
, но функция pg_prepare() гибче,
поскольку не заставляет указывать типы параметров.
Хотя в PHP нет функции для удаления подготовленного запроса,
это сделает SQL-команда DEALLOCATE
.
connection
Экземпляр
класса PgSql\Connection.
Функция выберет соединение по умолчанию, если параметр connection
не указали.
Соединение по умолчанию — последнее соединение, которое установила функция pg_connect()
или pg_pconnect().
Начиная с PHP 8.1.0 выбор функцией соединения по умолчанию устарел.
stmtname
Уникальное в пределах сессии имя, которым функция назовёт подготовленный запрос.
Функция создаст безымянный запрос, который перезапишет предыдущий безымянный запрос
текущей сессии, если задали пустую строку ""
.
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"));
?>