esc_sql()
Підготовляє рядок до використання у запиті 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()
(швидкість світла) | 50000 разів – 0.06 сек
(швидкість світла) |
PHP 7.4.8, WP 5.6.2
Хуків немає.
Повертає
Строку|Массив
. Очищений рядок.
Використання
$ data = esc_sql ($ data);
-
$data
(рядок/масив) (обов’язковий) Неочищений рядок, який використовуватиметься в аргументах SQL запиту.
Можна передати масив, тоді кожне його значення буде опрацьовано цією функцією.
Приклади
#1 Демо
echo esc_sql( 'Привіт!'); // Вітання! echo esc_sql('text''); // text" echo esc_sql("text'quote<tag>="); // text 'quote=
#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() esc sql WP 6.0.2
function esc_sql( $data ) { Global $wpdb; return $wpdb->_escape( $data ); }