Используя оператор like с $ wpdb-> prepare, показывающий хэши с подстановочными символами - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь создать подготовленный оператор с использованием подстановочных знаков, однако я сталкиваюсь с проблемой, при которой символы подстановочного знака в процентах, похоже, возвращают хэш-символы для подстановочных знаков, и я не уверен, почему.Код, о котором идет речь:

$condition = $wpdb->prefix."posts.post_title LIKE %%%s%%";
$query['conditions'][] = $wpdb->prepare($condition, $name);

И результаты:

posts.post_title LIKE {d690dd63f5944b9bca120e110c22802f0ec841d8120d813dd4abc08cba4a59c0}BT{d690dd63f5944b9bca120e110c22802f0ec841d8120d813dd4abc08cba4a59c0}

Интересно, есть ли у кого-нибудь идеи о том, что может быть причиной этого.Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

0 голосов
/ 18 декабря 2018

Подстановочный знак для LIKE должен быть в пределах независимо от того, какая переменная обозначается %s.В противном случае он получает токен для параметра, смешанного с подстановочным знаком SQL.Даже если это не было проблемой, вам все равно нужно сделать это так, потому что иначе% не будет экранирован в строке, и вы получите ошибку синтаксиса SQL.

Другими словамивам нужно добавить символы подстановки к самому значению $name.Это должно сделать работу, я думаю:

$condition = $wpdb->prefix."posts.post_title LIKE %s";
$name = '%'.$name.'%';
$query['conditions'][] = $wpdb->prepare($condition, $name);
...