wpdb::delete() WP 1.0

Click here to view original web page at wp-kama.ru

Удаляет строки из таблицы по переданному в параметр $where условию.

Метод включает защиту от SQL инъекций и можно передавать неочищенные данные, например: $_GET['foo']...

Хуков нет.

Возвращает

Число/0. Число удаленных строк или 0, если ничего не удалено.

Использование

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

Примеры

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

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

Заметки

  • Смотрите: wpdb::prepare()
  • Смотрите: wpdb::$field_types
  • Смотрите: wp_set_wpdb_vars()

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

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 ) );
}

Cвязанные функции

Из метки: wpdb