pg_insert
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
pg_insert —
Заносит данные массива в таблицу базы данных
Описание
Функция 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.
Примеры
Пример #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-запросам