esc_sql() WP 2.8.0

Підготовляє рядок до використання у запиті SQL. Захищає від ін’єкцій SQL. Може приймати масив рядків для обробки.

Працює на основі PHP функції addslashes() , тільки може обробляти масиви.

У більшості випадків цю функцію можна замінити на $wpdb->prepare() і така заміна рекомендується, оскільки вона, крім екранування, виправляє деякі помилки форматування. Використовувати цю функцію може бути зручніше в окремих випадках, коли потрібно обробити окрему змінну і незручно використовувати $wpdb->prepare().

У функцію можна передати масив, тоді кожне його значення буде опрацьовано цією функцією.

Ця функція – обгортка для методу wpdb::_escape() . Тобто. де зручно можна використати цей метод натомість.

З 4.8.3, символ %буде замінено рядком-заповнювачем, що запобігає атакам SQLi. Така зміна функції функції може викликати проблеми, коли результат esc_sql() використовується далі в коді. wpdb ::add_placeholder_escape() .

Увага! Функція розрахована лише на обробку рядків, які потім будуть використані в SQL запиті всередині лапок : field = '$esc_value', а не field = $esc_value.

Якщо очищене значення над лапках, то з нього можна зробити ін’єкцію. Наприклад рядок ORDER BY $esc_valueнебезпечний…

До версії 3.6 функція була аліасом методу $wpdb->escape() , який потім було скасовано.

Працює на основі:
wpdb::_escape()
1 раз – -0.00003 сек
(швидкість світла) | 50000 разів – 0.06 сек
(швидкість світла) |
PHP 7.4.8, WP 5.6.2

Хуків немає.

Повертає

Строку|Массив. Очищений рядок.

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

$ data = esc_sql ($ data);
$data
(рядок/масив) (обов’язковий)

Неочищений рядок, який використовуватиметься в аргументах SQL запиту.

Можна передати масив, тоді кожне його значення буде опрацьовано цією функцією.

Приклади

0

#1 Демо

echo esc_sql( 'Привіт!'); // Вітання!
echo esc_sql('text''); // text"
echo esc_sql("text'quote<tag>="); // text 'quote=
0

#2 Підготовка рядка для використання у запиті SQL

$name = esc_sql($name);
$status = esc_sql($status);

$wpdb->get_var( "SELECT something FROM table WHERE foo = '$name' and status = '$status'" );

теж з використанням $wpdb->prepare() :

$wpdb->get_var(
	$wpdb->prepare( "SELECT something FROM table WHERE foo = %s and status = %s", $name, $status )
);

нотатки

  • Global. wpdb. $wpdb WordPress database abstraction object.

список змін

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

код esc_sql() WP 6.0.2

function esc_sql( $data ) {
	Global $wpdb;
	return $wpdb->_escape( $data );
}

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

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