wpdb::esc_like()
Підготовка рядка для використання в LIKE частині SQL запиту. Обробляє спецсимволи %та _.
Ця функція не захищає від SQL ін’єкцій і тому її результат потрібно додатково обробити однією з функцій esc_sql() .
Ця функція використовується замість застарілої WP 4.0. функції like_escape( $string ) .
{} Це метод класу: wpdb{}
1 раз – 0.00001 сек
(швидкість світла) | 50000 разів – 0.01 сек
(швидкість світла) |
PHP 7.4.8, WP 5.6.2
(швидкість світла) | 50000 разів – 0.01 сек
(швидкість світла) |
PHP 7.4.8, WP 5.6.2
Хуків немає.
Повертає
Строку. Текст для LIKE частини запиту. Результат не очищений для SQL запиту, тому використовуйте wpdb::prepare() або wpdb::_real_escape() для додавання результату до запиту.
Використання
Global $wpdb; $wpdb->esc_like( $text );
- $text
(рядок) (обов’язковий) - Необроблений текст, спец-символи в якому потрібно екранувати для рядка LIKE. Рядок не повинен мати додаткових або віддалених слешів.
Приклади
#1 Приклад підготовки рядка для запиту LIKE
$wild = '%';
$find = 'тільки 43% of planets';
$like = $wild. $wpdb->esc_like( $find ) . $ wild;
$sql = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_content LIKE %s", $like );
echo $sql; // SELECT * FROM wp_posts WHERE post_content LIKE '{d710cab}only 43{d710cab} of planets{d710cab}'#2 Приклад з esc_sql()
$esc_like = $wpdb->esc_like( 'тільки 43% of planets' );
echo $esc_like; // Тільки 43% від planets
echo esc_sql($ esc_like); // Тільки 43 {f5fa52} of planets#3 Ще приклад підготовки рядка для LIKE запиту
Global $wpdb;
$link = $wpdb->esc_like($link); // підготуємо рядок для LIKE аргументу
$link = esc_sql($link); // Очистимо змінну
$link = '%'. $link. '%'; // створимо повну змінну пошуку LIKE
// знайдемо коментарі в тексті або засланні автора, є вказане посилання
$spammy = $wpdb->query("SELECT comment_approved FROM $wpdb->comments
WHERE (comment_content LIKE '$link' OR comment_author_url LIKE '$link')
AND comment_approved = 'spam'
LIMIT 1;
);#4 Короткий запис з prepare()
Global $wpdb; $link = '%'. $wpdb->esc_like( $link ) . '%'; $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_author_url LIKE %s LIMIT 1", $link )));
список змін
| З версії 4.0.0 | Введено. |
wpdb::esc like WP 6.0.2
public function esc_like( $text ) { return addcslashes( $text, '_%'); }