wpdb::delete() publicWP 3.4.0

Видаляє рядки з таблиці за умовою, зазначеною у параметрі $where .

Включає захист від SQL ін’єкцій, це означає, що можна передавати неочищені дані, наприклад: $_GET['foo']

{} Це метод класу: wpdb{}

Працює на основі:
wpdb::query() ,
wpdb::process_fields()

Хуків немає.

Повертає

int|false. Число видалених рядків або 0, якщо нічого не видалено. false повертається за помилки запиту.

Використання

Global $wpdb;
$wpdb->delete( $table, $where, $where_format );
$table
(рядок) (обов’язковий)
Назва таблиці.
$where
(масив) (обов’язковий)
Масив умов, за якими вибиратимуться рядки для видалення у форматі
[ 'название колонки' => 'чему равно' ]. Декілька умов будуть об’їдені через
AND. Якщо в значенні вказати
NULL, то в запиті отримаємо порівняння
IS NULL, відповідний формат при цьому ігнорується.
$where_format
(масив/рядок)

Масив форматів даних, які будуть асоційовані із зазначеними значеннями у параметрі $where . Якщо зазначений рядок, то він (формат) буде асоційований з усіма даними. При вказівці формату WordPress переводить передані дані у вказаний формат перед створенням запиту. Можливі формати:

  • %s– Рядок
  • %d– ціле число
  • %f– дробове число

Якщо не вказати, то для всіх значень $data буде вказано формат строка, якщо інше не зазначено у властивості wpdb::$field_types .
Типово: null

Приклади

0

#1 Приклад видалення даних із БД

// Видалимо рядок із полем ID=1 з таблиці table
$wpdb->delete( 'table', [ 'ID' => 1 ] );

// Вкажемо формат значення $where
$wpdb->delete( 'table', [ 'ID'=>'1' ], [ '%d' ] ); // 1 буде оброблено як число (% d).

нотатки

список змін

З версії 3.4.0Введено.

wpdb::delete WP 6.0.2

public function delete( $table, $where, $where_format = null ) {
	if ( ! is_array( $where ) ) {
		return false;
	}

	$where = $this->process_fields( $table, $where, $where_format );
	if ( false === $where ) {
		return false;
	}

	$conditions = array();
	$values ​​= array();
	foreach ( $where as $field => $value ) {
		if ( is_null( $value['value'] ) ) {
			$conditions[] = "$field` IS NULL";
			continue;
		}

		$conditions[] = "$field` = " . $ value ['format'];
		$values[] = $value['value'];
	}

	$conditions = implode( 'AND', $conditions );

	$sql = "DELETE FROM `$table` WHERE $conditions";

	$this->check_current_query = false;
	return $this->query( $this->prepare( $sql, $values ​​) );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *