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.

Функция pg_convert() обработает значения массива values с заданными флагами, если установлен параметр flags.

По умолчанию функция pg_insert() передаёт необработанные значения. Значения нужно экранировать или передавать в параметр flags флаг 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. Функция возвращает строку запроса, если в числе прочих в параметр flags передают флаг PGSQL_DML_STRING. Функция не вызывает функцию pg_convert() внутренне, если установлены флаги PGSQL_DML_NO_CONV или PGSQL_DML_ESCAPE.

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

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

Ошибки

Функция выбрасывает исключение ValueError, если заданная таблица недопустима.

Функция выбрасывает исключения ValueError или TypeError, если значение или тип поля не соответствуют правильному типу СУБД PostgreSQL.

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

Версия Описание
8.3.0 Функция теперь выбрасывает исключение ValueError, если заданная таблица недопустима; раньше функция выдавала ошибку уровня E_WARNING.
8.3.0 Функция теперь выбрасывает исключения ValueError или TypeError, если значение или тип поля не соответствуют правильному типу СУБД PostgreSQL; раньше функция выдавала ошибку уровня E_WARNING.
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-запросам