pg_insert

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_insert Заносит данные из массива в таблицу базы данных

Описание

pg_insert(
    PgSql\Connection $connection,
    string $table_name,
    array $values,
    int $flags = PGSQL_DML_EXEC
): PgSql\Result|string|bool

pg_insert() вставляет записи из массива values в таблицу table_name.

Если flags указан, pg_convert() применяется к values с указанными флагами.

По умолчанию pg_insert() передаёт необработанные значения. Значения должны быть экранированы или опция PGSQL_DML_ESCAPE должна быть указана. PGSQL_DML_ESCAPE заключает в кавычки и экранирует параметры/идентификаторы. Поэтому имена таблиц/столбцов становятся чувствительными к регистру.

Обратите внимание, что ни экранирование, ни подготовленный запрос не защитят запрос LIKE, JSON, массив, регулярные выражения и т.д.. Эти параметры должны обрабатываться в соответствии с их контекстами, т.е. следует экранировать/проверять значения.

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

connection

Экземпляр PgSql\Connection.

table_name

Имя таблицы для вставки данных. Количество колонок в таблице table_name должно быть не меньше, чем элементов в массиве values.

values

Ассоциативный массив(array), в котором ключи являются названиями колонок таблицы table_name, а значения - записи, которые необходимо вставить в эти колонки.

flags

Комбинация констант PGSQL_CONV_OPTS, PGSQL_DML_NO_CONV, PGSQL_DML_ESCAPE, PGSQL_DML_EXEC, PGSQL_DML_ASYNC и PGSQL_DML_STRING. Если в числе прочих передаётся PGSQL_DML_STRING в параметре flags, функция вернёт строку запроса. Если установлены PGSQL_DML_NO_CONV или PGSQL_DML_ESCAPE, то функция pg_convert() внутренне не вызывается.

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

Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.. Или возвращает строку(string), если PGSQL_DML_STRING включена в список параметров аргумента flags.

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

Версия Описание
8.1.0 Возвращает экземпляр PgSql\Result; ранее возвращался ресурс (resource).
8.1.0 Параметр connection теперь ожидает экземпляр PgSql\Connection; ранее ожидался ресурс (resource).

Примеры

Пример #1 Пример использования pg_insert()

<?php
$dbconn
= pg_connect('dbname=foo');
// Это безопасно в некоторой степени, поскольку все значения экранируются.
// Однако PostgreSQL поддерживает JSON/массив. Для этих значений это не безопасно
// ни с через экранирование, ни с помощью подготовленного запроса.
$res = pg_insert($dbconn, 'post_log', $_POST, PGSQL_DML_ESCAPE);
if (
$res) {
echo
"Данные из POST успешно внесены в журнал\n";
} else {
echo
"Пользователь прислал неверные данные\n";
}
?>

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

  • pg_convert() - Преобразует значения ассоциативного массива в приемлемые для использования в SQL-запросах