2010-12-14 219 views
1

我需要帮助进行评论的搜索查询(这是一个WordPress网站)。PHP/MySQL - 搜索查询

评论中检索该way-如果用户登录:

 $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的database structure。我在寻找搜索字符串是comment_content

回答

2

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

谢谢,我会尝试。顺便说一句,百分号在$ _GET之前和之后做什么? – Alex 2010-12-14 19:39:12

1

你可以把他们都在一个数组,并使用array_search:

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

您也可以使用谷歌WP搜索查询widge。我用它它的伟大前后 :

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

+0

但是,只有获得具有该搜索字符串的评论才会更快吗?我的意思是减少数据库使用 – Alex 2010-12-14 19:30:05

+0

检查wp谷歌搜索查询窗口。它非常适合wordpress – Tom 2010-12-14 19:34:03

1

,谢谢,我会尽力。顺便说一句,百分号在$ _GET之前和之后做什么?

它会匹配搜索字符串前后的任意数量的字符。

+0

谢谢:D另一个queston:我应该如何逃避$ _POST变量?是'mysql_real_escape_string'够了吗? – Alex 2010-12-14 20:21:15

+0

我老实说不知道,我用PDO编写的语句,最近才需要用到MySQL。但是,您可以阅读有关此问题的讨论[此处](http://stackoverflow.com/questions/4171115/is-mysql-real-escape-string-enough-to-anti-sql-injection)。 – madkris24 2010-12-19 17:44:16