2010-12-14 11 views
1

Ich brauche Hilfe bei der Suche nach Kommentaren (es ist für eine WordPress-Website).PHP/MySQL - Suchanfrage

Kommentare sind diese Weg- abgerufen, wenn der Benutzer angemeldet ist:

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

wenn nicht:

 $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 ich, wie ich Kommentare filtern können, die einen bestimmten Suchbegriff, wie $_GET['search_query'] enthalten ?

Dies ist WP database structure. Der Suchbegriff ich suche ist in comment_content

Antwort

2

Verwendung 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

danke, ich werde es versuchen. Was macht das Prozentzeichen vor und nach $ _GET? – Alex

1

Sie sie alle in einer Reihe setzen und verwenden array_search:

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

Sie können auch wp google Suchbegriff widge verwenden. Früher habe ich es vor und es toll:

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

+0

aber wäre es nicht schneller, nur die Kommentare zu erhalten, die diese Suchzeichenfolge haben? Ich bin meine weniger Datenbankverwendung – Alex

+0

überprüfen Sie die wp google Suchabfrage Widge. es eignet sich perfekt für WordPress – Tom

1

danke, ich werde es versuchen. Was macht das Prozentzeichen vor und nach $ _GET?

Es wird eine beliebige Anzahl von Zeichen vor und nach der Suchzeichenfolge übereinstimmen.

+0

danke: D noch eine Frage: Wie sollte ich die Variable $ _POST entkommen lassen? ist 'mysql_real_escape_string' genug? – Alex

+0

Ich weiß ehrlich gesagt nicht, ich verwende PDO vorbereitete Aussagen, habe erst vor kurzem benötigt, um MySQL zu verwenden. Sie können jedoch die Diskussion [http://stackoverflow.com/questions/4171115/is-mysql-real-escape-string-enough-to-antis-sql-injection] in Bezug auf die Angelegenheit lesen. – madkris24

Verwandte Themen