wpdb::_real_escape()publicWP 2.8.0

Экранирует строку для безопасной вставки в SQL-запрос через mysqli_real_escape_string().

Перед возвратом заменяет символы % внутренним плейсхолдером WordPress.

Метод используется внутри wpdb::_escape(), wpdb::prepare() и wpdb::escape_by_ref(). Обычно следует применять wpdb::prepare(), а не вызывать этот метод напрямую.

Для работы метода требуется подключение к базе данных. Если подключения нет, WordPress создаст предупреждение о неправильном использовании и выполнит экранирование через addslashes().

Метод класса: wpdb{}

Работает на основе: wpdb::add_placeholder_escape()
Основа для: wpdb::_escape()
1 раз — 0.0000081 сек (скорость света) | 50000 раз — 0.05 сек (скорость света)

Хуков нет.

Возвращает

Строку.

  • строку - экранированная строка.
  • '' - если передано нескалярное значение.

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

global $wpdb;
$wpdb->_real_escape( $data );
$data(string) (обязательный)
Строка для экранирования.

Примеры

0

#1 Экранирование строки

global $wpdb;
$value = $wpdb->_real_escape( "O'Reilly" ); // O\'Reilly

Заметки

  • Смотрите: mysqli_real_escape_string()

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

С версии 2.8.0 Введена.

Код wpdb::_real_escape() WP 7.0.3

public function _real_escape( $data ) {
	if ( ! is_scalar( $data ) ) {
		return '';
	}

	if ( $this->dbh ) {
		$escaped = mysqli_real_escape_string( $this->dbh, $data );
	} else {
		$class = get_class( $this );

		wp_load_translations_early();
		/* translators: %s: Database access abstraction class, usually wpdb or a class extending wpdb. */
		_doing_it_wrong( $class, sprintf( __( '%s must set a database connection for use with escaping.' ), $class ), '3.6.0' );

		$escaped = addslashes( $data );
	}

	return $this->add_placeholder_escape( $escaped );
}