Обновление данных в таблице

# pg_update

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

pg_update — Обновление данных в таблице

### Описание

function pg_update(
PgSql\Connection `$connection`,
string `$table_name`,
array `$values`,
array `$conditions`,
int `$flags` = `PGSQL_DML_EXEC`
): string|bool

pg_update() заменяет записи в таблице, удовлетворяющие условиям `conditions` данными `values`.

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

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

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

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

`connection`
  Экземпляр класса PgSql\Connection.
`table_name`

  Имя таблицы, в которой обновляются записи.

`values`

  Массив (array), ключи которого соответствуют именам колонок таблицы `table_name`, а значения заменят данные в этих колонках.

`conditions`

  Массив (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`, функция вернёт строку. Если установлены `PGSQL_DML_NO_CONV` или `PGSQL_DML_ESCAPE`, то функция pg_convert() внутренне не вызывается.

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

Функция возвращает `true`, если выполнилась успешно, или `false`, если возникла ошибка. Функция вернёт строку (string), если константа `PGSQL_DML_STRING` содержится в `flags`.

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

Версия | Описание
--- | ---
8.1.0 | Параметр `connection` теперь принимает объект PgSql\Connection; раньше параметр принимал тип resource.

### Примеры

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

    <?php
      $db = pg_connect('dbname=foo');
      $data = array('field1'=>'AA', 'field2'=>'BB');

      // Это безопасно в некоторой степени, поскольку все значения экранируются.
      // Однако PostgreSQL поддерживает JSON/массив. Для этих значений это не безопасно
      // ни с через экранирование, ни с помощью подготовленного запроса.
      $res = pg_update($db, 'post_log', $_POST, $data);
      if ($res) {
          echo "Данные обновлены: $res\n";
      } else {
          echo "Должно быть переданы неверные данные\n";
      }
    ?>

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

- pg_convert() - Преобразовывает значения ассоциативного массива в вид, который соответствует SQL-запросам

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open