wpdb::esc_like() publicWP 4.0.0

Підготовка рядка для використання в 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

Хуків немає.

Повертає

Строку. Текст для LIKE частини запиту. Результат не очищений для SQL запиту, тому використовуйте wpdb::prepare() або wpdb::_real_escape() для додавання результату до запиту.

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

Global $wpdb;
$wpdb->esc_like( $text );
$text
(рядок) (обов’язковий)
Необроблений текст, спец-символи в якому потрібно екранувати для рядка LIKE. Рядок не повинен мати додаткових або віддалених слешів.

Приклади

0

#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}'
0

#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
0

#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;
);
0

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

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

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