wpdb::_real_escape()
Экранирует строку для безопасной вставки в 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) (обязательный)
- Строка для экранирования.
Примеры
#1 Экранирование строки
global $wpdb; $value = $wpdb->_real_escape( "O'Reilly" ); // O\'Reilly
Заметки
- Смотрите: mysqli_real_escape_string()
Список изменений
| С версии 2.8.0 | Введена. |
Код wpdb::_real_escape() 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 );
}