pg_prepare

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_prepare Отправляет на сервер запрос на подготовку SQL-запроса с параметрами-заполнителями и ждёт, пока завершится подготовка запроса

Описание

pg_prepare(PgSql\Connection $connection = ?, string $stmtname, string $query): PgSql\Result|false

Функция 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"));

?>

Смотрите также

  • pg_execute() - Запускает выполнение ранее подготовленного параметризованного запроса и ждёт результат
  • pg_send_execute() - Запускает предварительно подготовленный SQL-запрос и передаёт ему параметры; не ожидает возвращаемого результата