pg_insert

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

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

Описание

pg_insert ( resource $connection , string $table_name , array $assoc_array [, int $options = PGSQL_DML_EXEC ] ) : mixed

pg_insert() вставляет записи из массива assoc_array в таблицу table_name. Если задан аргумент options, значения массива будут преобразованы функцией pg_convert() соответствии с параметрами из этого аргумента.

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

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

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

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

connection

Ресурс соединения с базой данных PostgreSQL.

table_name

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

assoc_array

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

options

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

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

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

Примеры

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

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

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

Версия Описание
5.6.0 Если не передана константа PGSQL_DML_STRING, функция, в случае успешного завершения, возвращает ресурс соединения, а не TRUE.
5.6.0 Больше не является экспериментальной. Добавлена константа PGSQL_DML_ESCAPE, TRUE/FALSE и NULL типы данных теперь поддерживаются.
5.5.3/5.4.19 Исправлены прямые SQL-инъекции в table_name и непрямые SQL-инъекции в идентификаторах.

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

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