2010-12-14 36 views
1

J'ai besoin d'aide pour faire une requête de recherche de commentaires (c'est pour un site WordPress).PHP/MySQL - Requête de recherche

les commentaires sont récupérés ce Way- si l'utilisateur est connecté:

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

sinon:

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

donc je comment puis-je filtrer les commentaires qui contiennent une chaîne de recherche spécifique, comme $_GET['search_query'] ?

c'est WP database structure. La chaîne de recherche Je recherche est en comment_content

Répondre

2

utilisation COMME

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

merci, je vais essayer. btw que fait le signe de pourcentage avant et après $ _GET? – Alex

1

Vous pouvez les mettre tous dans un tableau et utiliser array_search:

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

Vous pouvez également utiliser wp google widge requête de recherche. je l'ai utilisé avant et c'est génial:

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

+0

mais ne serait-il pas plus rapide d'obtenir seulement les commentaires qui ont cette chaîne de recherche? Je veux dire moins d'utilisation de la base de données – Alex

+0

vérifier la requête de recherche wp google widge. il convient parfaitement pour wordpress – Tom

1

merci, je vais essayer. btw que fait le signe de pourcentage avant et après $ _GET?

Il correspond à n'importe quel nombre de caractères avant et après la chaîne de recherche.

+0

merci: D un autre queston: comment devrais-je échapper à la variable $ _POST? 'mysql_real_escape_string' est-il suffisant? – Alex

+0

Honnêtement, je ne sais pas, j'utilise des instructions préparées PDO, ont récemment besoin d'utiliser MySQL. Vous pouvez cependant lire la discussion [ici] (http://stackoverflow.com/questions/4171115/is-mysql-real-escape-string-enough-to-anti-sql-injection) à ce sujet. – madkris24