Посылает запрос на создание параметризованного SQL-выражения, не дожидаясь его завершения

# pg_send_prepare

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

pg_send_prepare — Посылает запрос на создание параметризованного SQL-выражения, не дожидаясь его завершения

### Описание

function pg_send_prepare(PgSql\Connection `$connection`, string `$statement_name`, string `$query`): int|bool

Посылает запрос на создание параметризованного SQL выражения и не ждёт его завершения.

Это асинхронный вариант функции pg_prepare(): она возвращает `true`, если удалось отправить запрос, иначе `false`. После успешной отправки, воспользуйтесь функцией pg_get_result(), чтобы узнать, создалось ли требуемое SQL выражение. Аргументы функции обрабатываются так же, как в pg_prepare(). Функция не будет работать с серверами PostgreSQL версий ниже 7.4.

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

`connection`
  Экземпляр класса PgSql\Connection.
`statement_name`

  Имя создаваемой заготовки. Должно быть уникальным в пределах сессии. Если задана пустая строка, будет создано безымянное SQL выражение. При этом оно перезапишет уже существующее безымянное выражение, определённое ранее.

`query`

  Параметризованный SQL запрос. Должен содержать только одно выражение (несколько выражений разделённых точкой с запятой не поддерживаются). Если в запрос будут передаваться параметры, то они заменят псевдопеременные $1, $2 и т. д.

### Возвращаемые значения

Функция возвращает `true` в случае успешного выполнения, `false` или `0`, если возникла ошибка. Результат запроса получают функцией pg_get_result().

### Список изменений

Версия | Описание
--- | ---
8.1.0 | Параметр `connection` теперь принимает объект PgSql\Connection; раньше параметр принимал тип resource.

### Примеры

Пример #1 Пример использования функции pg_send_prepare()

    <?php

    $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

    // Подготовка запроса
    if (!pg_connection_busy($dbconn)) {
        pg_send_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
        $res1 = pg_get_result($dbconn);
    }

    // Запуск запроса на выполнение. Стоит отметить, что нет необходимости экранировать
    // спецсимволы в строке "Joe's Widgets"
    if (!pg_connection_busy($dbconn)) {
        pg_send_execute($dbconn, "my_query", array("Joe's Widgets"));
        $res2 = pg_get_result($dbconn);
    }

    // Запуск на выполнение того же запроса, но с другим параметром
    if (!pg_connection_busy($dbconn)) {
        pg_send_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
        $res3 = pg_get_result($dbconn);
    }

    ?>

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

- pg_connect() - Открывает соединение с базой данных PostgreSQL
- pg_pconnect() - Открывает постоянное соединение с сервером PostgreSQL
- pg_execute() - Запускает выполнение ранее подготовленного параметризованного запроса и ждёт результат
- pg_send_execute() - Запускает предварительно подготовленный SQL-запрос и передаёт ему параметры; не ожидает возвращаемого результата
- pg_send_query_params() - Посылает параметризованный запрос на сервер, не ожидает возвращаемого результата

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