2010-12-14 214 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