1

I need help making a search query for comments (it's for a WordPress site).

the comments are retrieved this way- if user is logged in:

       $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));

if not:

       $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));

so I how can I filter comments that contain a specific search string, like $_GET['search_query'] ?

this is WP's database structure. The search string I'm looking for is in comment_content

3 Answers 3

2

use 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));
Sign up to request clarification or add additional context in comments.

1 Comment

thanks, I'll try. btw what does the percentage sign do before and after $_GET ?
1

You can put them all in an array and use array_search:

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

You can also use wp google search query widge. i used it before and it's great:

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

2 Comments

but wouldn't it be faster to only get the comments that have that search string? I'm mean less database usage
check the wp google search query widge. it suited perfectly for wordpress
1

thanks, I'll try. btw what does the percentage sign do before and after $_GET ?

It'll match any number of characters before and after the search string.

2 Comments

thanks :D another queston: how should I escape the $_POST variable? is mysql_real_escape_string enough?
I honestly do not know, I use PDO prepared statements, have only recently needed to use MySQL. You can however, read the discussion here regarding the matter.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.