wpdb::insert()
Вставляє рядок (зазначені дані) у вказану таблицю.
Метод очищає передані дані та захищає від SQL ін’єкцій, тому дані можуть бути “брудні” (неочищені), наприклад: $_GET['foo']
.
Після додавання даних створене значення AUTO_INCREMENT можна отримати у змінній: $wpdb->insert_id
.
{} Це метод класу: wpdb{}
wpdb::_insert_replace_helper()
Хуків немає.
Повертає
int|false
.
число
– Число вставлених рядків.false
– Якщо дані не були вставлені в таблицю.
УВАГА! Поверне false (без будь-яких помилок), коли рядок (значення комірки), що передається для вставки, довше максимально можливого. Наприклад, колонка varchar(10) (довжина значення 10 символів), а в переданих даних для вставки вказаний рядок з 11 або більше символами.
Впіймати такий баг дуже складно! Тому треба мати це на увазі, коли все ніби має працювати (правильні дані передається), але wpdb::insert() повертає false без будь-яких помилок.
Така проблема стосується майже всіх методів, це:
wpdb::replace()
wpdb::insert()
wpdb::update()
wpdb::delete()
Використання
Global $wpdb; $wpdb->insert($table, $data, $format);
-
$table
(рядок) (обов’язковий) - Назва таблиці в яку вставлятимемо дані.
-
$data
(масив) Дані, які потрібно вставити. Кожен елемент масиву має такий вигляд:
[ 'колонка таблицы' => 'значение' ]
.Якщо вказати в значенні NULL , то значення буде встановлено NULL , вказаний формат при цьому ігнорується.
Дані, що передаються, НЕ повинні бути очищені: esc_sql() .
-
$format
(масив/рядок) Масив форматів даних, які будуть асоційовані із зазначеними значеннями у параметрі $data . Якщо зазначений рядок, то він (формат) буде асоційований з усіма даними. При вказівці формату WordPress переводить передані дані у зазначений формат перед тим, як зберегти дані. Можливі формати:
%s
– Рядок%d
– ціле число%f
– дробове число
Якщо не вказати, то для всіх значень $data буде вказано формат
строка
, якщо інше не вказано у властивості wpdb::$field_types .
Типово: null
Приклади
#1 Вставимо рядок у таблицю БД
// Вставка рядка із зазначенням значень для двох полів (значення для інших полів будуть дефолтні) $wpdb->insert( 'table', [ 'column' => 'foo', 'field' => 'bar' ] ); // із зазначенням типів даних $wpdb->insert( 'table', [ 'column' => 'foo', 'field' => 1337 ], [ '%s', '%d' ] );
нотатки
- Дивіться: wpdb::prepare()
- Дивіться: wpdb::$field_types
- Дивіться: wp_set_wpdb_vars()
список змін
З версії 2.5.0 | Введено. |
wpdb::insert WP 6.0.2
public function insert( $table, $data, $format = null ) { return $this->_insert_replace_helper( $table, $data, $format, 'INSERT' ); }