PHP / MySQL - поисковый запрос - PullRequest
       6

PHP / MySQL - поисковый запрос

1 голос
/ 14 декабря 2010

Мне нужна помощь в создании поискового запроса для комментариев (это для сайта WordPress).

комментарии получаются таким образом, если пользователь вошел в систему:

       $comments = $wpdb->get_results($wpdb->prepare("
       SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d
       AND (comment_approved = '1' OR (user_id = %d AND comment_approved = '0'))
       ORDER BY comment_date_gmt", $post->ID, $user_ID));

если нет:

       $comments = $wpdb->get_results($wpdb->prepare("
       SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d
       AND (comment_approved = '1' OR (comment_author = %s
         AND comment_author_email = %s AND comment_approved = '0'))
       ORDER BY comment_date_gmt",
       $post->ID, wp_specialchars_decode($comment_author,ENT_QUOTES),
       $comment_author_email));

так как мне отфильтровать комментарии, которые содержат определенную строку поиска, например $_GET['search_query']?

это структура базы данных WP . Строка поиска, которую я ищу, находится в comment_content

Ответы [ 3 ]

2 голосов
/ 14 декабря 2010

используйте LIKE

 $comments = $wpdb->get_results($wpdb->prepare("
       SELECT * FROM $wpdb->comments WHERE comment_content LIKE ('%$_GET['search_query']%')
and comment_post_ID = %d
       AND (comment_approved = '1' OR (user_id = %d AND comment_approved = '0'))
       ORDER BY comment_date_gmt", $post->ID, $user_ID));
1 голос
/ 14 декабря 2010

спасибо, попробую. Кстати, что делает знак процента до и после $ _GET?

Он будет соответствовать любому количеству символов до и после строки поиска.

1 голос
/ 14 декабря 2010

Вы можете поместить их все в массив и использовать array_search:

http://il2.php.net/manual/en/function.array-search.php

Вы также можете использовать wp google search search widge. я использовал это раньше и это здорово:

http://www.lautr.com/wp-google-search-query-widget-wordpress-plugin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...