(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
pg_insert — Заносит данные массива в таблицу базы данных
$connection
,$table_name
,$values
,$flags
= PGSQL_DML_EXEC
Функция 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";
}
?>