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

# pg_prepare

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

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

### Описание

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

Функция pg_prepare() подготавливает SQL-запрос, который затем запустит функция pg_execute() или pg_send_execute(). Функция помогает разбирать и планировать команды только один раз, а не каждый раз при выполнении, а потом многократно выполнять такие команды. Функция pg_prepare() поддерживает соединения только с БД PostgreSQL 7.4 или новее; функция не будет работать c серверами предыдущих версий.

Функция создает подготовленный запрос с названием `statement_name` из строки `query`, которая содержит одну команду. Значение параметра `statement_name` указывают как пустую строку `""`, чтобы создать безымянный запрос, который автоматически заменяет предыдущий безымянный запрос; в остальных случаях попытка назвать запрос именем, которое уже определили в текущей сессии, вызовет ошибку. Параметры, которые передали при выполнении запроса, указывают на обозначения `$1`, `$2` и т. д. в запросе `query`.

Подготовленные для функции pg_prepare() запросы создают также SQL-командой `PREPARE`, но функция pg_prepare() гибче, поскольку не заставляет указывать типы параметров. Хотя в PHP нет функции для удаления подготовленного запроса, это сделает SQL-команда `DEALLOCATE`.

### Список параметров

`connection`

  Экземпляр класса PgSql\Connection. Функция выберет соединение по умолчанию, если параметр `connection` не указали. Соединение по умолчанию — последнее соединение, которое установила функция pg_connect() или pg_pconnect().

  Внимание

  Начиная с PHP 8.1.0 выбор функцией соединения по умолчанию устарел.

`statement_name`

  Уникальное в пределах сессии имя, которым функция назовёт подготовленный запрос. Функция создаст безымянный запрос, который перезапишет предыдущий безымянный запрос текущей сессии, если задали пустую строку `""`.

`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-запрос и передаёт ему параметры; не ожидает возвращаемого результата

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open