sql LIKE запрос возвращает только точное совпадение, но не совпадает
Я работаю над $wpdb
запрос для поиска элементов в медиа-библиотеке. Поисковый вид работает, кроме того, что он возвращает только точные совпадения.
У меня есть два изображения в библиотеке, один называется run
а другой называется running
, если я просто ищу run
, он только возвращает точное совпадение, running
не возвращается Я что-то здесь упускаю? я думал LIKE
возвращенные вещи, которые содержат эти символы?
Вот мой запрос полностью, я использую AJAX, чтобы вставить его в страницу.
include_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php' );
global $wpdb;
if( isset($_GET['nameLike']) ) {
$search = $_GET['nameLike'];
} else {
$search = '';
}
$results = $wpdb->get_results( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_status = 'inherit' AND post_title LIKE %s", $search), ARRAY_A);
foreach ($results as $result) : ?>
<?php $image = wp_get_attachment_image( $result[ID], array(200, 150) ); ?>
<div class="grid-1-4"><?php echo($image); ?></div>
<?php endforeach ?>
1 ответ
Решение
Я написал ответ в комментарии, напишу и здесь, как правильно это реализовать в WP. Вы можете добавить "%" в свой поисковый запрос.
$results = $wpdb->get_results( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_status = 'inherit' AND post_title LIKE %s", '%' . like_escape($search) . '%'), ARRAY_A);
РЕДАКТИРОВАТЬ: взятый пример WP отсюда