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, '_%'); }