(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
pg_send_query — Отправляет асинхронный запрос
pg_send_query() отправляет на выполнение асинхронный запрос. В отличие от pg_query() запрос может содержать несколько SQL-выражений, разделённых точкой с запятой. Для получения результата запроса используйте функцию pg_get_result().
Выполнение запроса не прерывает работу скрипта. Для определения занятости соединения (когда запрос ещё выполняется) используйте функцию pg_connection_busy(). Выполнение запроса можно прервать функцией pg_cancel_query().
Несмотря на то, что можно отправить несколько запросов за раз, их нельзя посылать, пока соединение занято. В противном случае, посланный запрос дождётся завершения предыдущего, сотрёт его результат и запустится сам. Таким образом вы потеряете данные результата предыдущего запроса.
connection
Экземпляр класса PgSql\Connection.
query
Одно или несколько SQL-выражений, разделённых точкой с запятой.
Спецсимволы в строке запроса должны быть экранированы.
Возвращает true
в случае успешного выполнения, false
или 0
в случае возникновения ошибки.
Для получения результата запроса используйте функцию
pg_get_result().
Версия | Описание |
---|---|
8.1.0 |
Параметр connection теперь ожидает экземпляр
класса PgSql\Connection; раньше параметр ожидал ресурс (resource).
|
Пример #1 Пример использования pg_send_query()
<?php
$dbconn = pg_connect("dbname=publisher") or die("Не удалось подключиться");
if (!pg_connection_busy($dbconn)) {
pg_send_query($dbconn, "select * from authors; select count(*) from authors;");
}
$res1 = pg_get_result($dbconn);
echo "Первый вызов pg_get_result(): $res1\n";
$rows1 = pg_num_rows($res1);
echo "$res1 содержит $rows1 записей\n\n";
$res2 = pg_get_result($dbconn);
echo "Второй вызов pg_get_result(): $res2\n";
$rows2 = pg_num_rows($res2);
echo "$res2 содержит $rows2 записей\n";
?>
Результат выполнения приведённого примера:
Первый вызов pg_get_result(): Resource id #3 Resource id #3 содержит 3 записей Второй вызов pg_get_result(): Resource id #4 Resource id #4 содержит 1 записей