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 отсюда

Другие вопросы по тегам