wpdb::update()
Обновляет указанные данные в указанной строке таблицы.
Метод включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
.
Читайте также: Массив для значений поля в $where параметре $wpdb->update.
НЕ вставляет данные если их нет в БД - только обновляет существующие данные.
Метод класса: wpdb{}
Хуков нет.
Возвращает
int|false
.
число
- сколько строк было обработано0
- запрос был выполнен корректно, но ни одна строка не была обработана. Если в БД уже есть данные и вы пытаетесь обновить, указав точно такие же данные, то wpdb::update() вернет 0.false
- запрос провалился или ошибка запроса.
Так как возвращается 0, если никакие поля не были обновлены (изменены), но запрос был выполнен корректно, проверку результата запроса на ошибку нужно делать с учетом типа возвращаемых данных $res === false
.
Использование
global $wpdb; $wpdb->update( $table, $data, $where, $format, $where_format );
- $table(строка) (обязательный)
- Название таблицы, данные в которой нужно обновить.
- $data(массив) (обязательный)
Данные, которые нужно обновить в формате
[ 'название колонки' => 'новое значение' ]
.Если в значении указать NULL, то в значение будет установлено в NULL, соответствующий формат при этом игнорируется.
- $where(массив) (обязательный)
- Ассоциированный массив с условием выборки строк таблицы данные в которых нужно обновить (SQL WHERE). Формат массива:
[ 'название колонки' => 'чему равно' ]
. Если указать несколько элементов в массиве, то указанные условия будут объедены черезAND
- т.е. должны будут совпасть все условия, а НЕ какое-либо одно. Если в значении указатьNULL
то в запросе получим сравнениеIS NULL
, соответствующий формат при этом игнорируется. - $format(массив/строка)
Массив форматов данных которые будут ассоциированы с указанными значениями в параметре $data. Если указана строка, то она (формат) будет ассоциирован со всеми данными. При указании формата, WordPress переводит переданные данные в указанный формат перед созданием запроса. Возможные форматы:
%s
- строка%d
- целое число%f
- дробное число
Если не указать, то для всех значений $data будет указан формат
строка
, если иное не указано в свойстве wpdb::$field_types.
По умолчанию: null- $where_format(массив/строка)
- Тоже самое что и $format, только для $where данных.
По умолчанию: null
Примеры
#1 Обновим строку ID которой равен 1
Значение первой колонки строка, значение второй колонки число:
$wpdb->update( 'table', [ 'column1' => 'value1', 'column2' => $_GET['val'] ], [ 'ID' => 1 ] );
#2 Тоже самое с указанием типов передаваемых данных
$wpdb->update( 'table', [ 'column1' => 'value1', 'column2' => $_GET['val'] ], [ 'ID' => 1 ], [ '%s', '%d' ], [ '%d' ] );
#3 Demo
$wpdb->update( 'table', [ 'column' => 'foo', 'field' => 'bar' ], [ 'ID' => 1 ] ); $wpdb->update( 'table', [ 'column' => 'foo', 'field' => 1337 ], [ 'ID' => 1 ], [ '%s', '%d' ], [ '%d' ] );
Заметки
- Смотрите: wpdb::prepare()
- Смотрите: wpdb::$field_types
- Смотрите: wp_set_wpdb_vars()
Список изменений
С версии 2.5.0 | Введена. |