(PHP 5 >= 5.1.0, PHP 7, PHP 8)
pg_query_params — Посылает параметризованный запрос на сервер, параметры передаются отдельно от текста SQL запроса
Посылает параметризованный запрос на сервер и ждёт результат. Параметры передаются отдельно от строки запроса.
pg_query_params() подобна функции pg_query(), но предоставляет дополнительный функционал: параметры запроса можно передавать отдельно от строки запроса. pg_query_params() поддерживается на соединениях с серверами PostgreSQL версий 7.4 и выше. Функция не будет работать с серверами ранних версий.
Если используются параметры params
, они заменяют
псевдопеременные $1, $2 и т.д. в строке запроса query
.
Один и тот же параметр может быть указан больше одного раза в query
;
в этом случае будут использованы одинаковые значения. params
определяют
текущие значения параметров. Значение null
в массиве параметров будет означать
SQL NULL
в запросе.
Главное преимущество pg_query_params() перед
pg_query() заключается в том, что значения параметров могут
передаваться отдельно от строки запроса query
. Это даёт
возможность избежать утомительную и подверженную ошибкам процедуру экранирования
спецсимволов и заключения значений в кавычки. Однако, в отличие от
pg_query(), эта функция поддерживает только один SQL запрос
в передаваемой строке. (Он может содержать точку с запятой, но не более одной
непустой SQL-команды.)
connection
Экземпляр PgSql\Connection.
Если connection
не указано, используется соединение по умолчанию. Соединение по умолчанию - это последнее соединение, выполненное с помощью функций pg_connect()
или pg_pconnect().
Начиная с версии PHP 8.1.0, использование соединения по умолчанию устарело.
query
Параметризованный SQL запрос. Должен содержать только одно выражение (несколько выражений разделённых точкой с запятой не поддерживаются). Если в запрос будут передаваться параметры, то они заменят псевдопеременные $1, $2 и т.д.
Пользовательские данные всегда должны передаваться как параметры, и не передаваться в строку запроса напрямую, где они могут привести к возможным атакам через SQL-инъекции и приводит к ошибкам, если данные содержат кавычки. Если по каким-то причинам вы не можете использовать параметр, убедитесь, что пользовательские данные правильно экранированы.
params
Массив значений параметров запроса для замены псевдопеременных $1, $2 и т.д. в исходной строке запроса. Количество элементов массива должно точно совпадать с количеством псевдопеременных.
Значения предназначенные для bytea
полей нельзя передавать в параметрах.
Используйте функцию pg_escape_bytea() или функции для больших объектов.
Экземпляр PgSql\Result в случае успешного выполнения или false
в случае возникновения ошибки.
Версия | Описание |
---|---|
8.1.0 | Возвращает экземпляр PgSql\Result; ранее возвращался ресурс (resource). |
8.1.0 |
Параметр connection теперь ожидает экземпляр PgSql\Connection; ранее ожидался ресурс (resource).
|
Пример #1 Пример использования pg_query_params()
<?php
// Подключение к базе данных "mary"
$dbconn = pg_connect("dbname=mary");
// Найдём все магазины с названием "Joe's Widgets". Стоит отметить, что нет необходимости экранировать
// спецсимволы в строке "Joe's Widgets"
$result = pg_query_params($dbconn, 'SELECT * FROM shops WHERE name = $1', array("Joe's Widgets"));
// Для сравнения то же самое, используя функцию pg_query
$str = pg_escape_string("Joe's Widgets");
$result = pg_query($dbconn, "SELECT * FROM shops WHERE name = '{$str}'");
?>