2017-02-13 83 views
1

我已經寫了下面的MySQL查詢,允許以填補PHP數組包含單詞的特定組合而跳過所有其他單元格中的內容:

$variable = "value"; 
$query = $wpdb->get_results(" 
    SELECT post_content 
    FROM wp_posts 
    WHERE post_content 
    REGEXP '>(.*) $variable (.*)<' 
"); 

它成功地滿足,除非我想具體的WordPress的類別,以限制其義務或設置WordPress的類別的承諾。

在這一點上,我只是不知道如何修改我的查詢,以滿足我的需求。

有大量的工作示例僅對特定的WordPress類別執行mysql查詢,但他們都立即無法填充陣列,只要我向其中添加REGEXP '>(.*) $variable (.*)<'

我真的會使用$array = array('s' => $value, 'cat' => ID, 'posts_per_page' => -1);或類似的東西,如果's'不會使用mysql的LIKE語句在我的情況下產生不可預知的結果。

幫我修改我的查詢,請。

如果你要幫我這個事情,我會說更多的謝謝你的情況下,你不會覺得無聊發表評論的每一個變化或添加到我的查詢,就在你的附近添加代碼。它始終是偉大的,讓準備好結果,但我想學習,並防止自己一次又一次地問同樣的問題,每一個我遇到類似的問題時。

回答

1

一些研究,我已經結束了這個工作的解決方案後:

$variable = "value"; 
$query = $wpdb->get_results(" 
    SELECT ID, post_content 
    FROM $wpdb->posts p 
     JOIN $wpdb->term_relationships tr ON (p.ID = tr.object_id) 
     JOIN $wpdb->term_taxonomy tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id) 
     JOIN $wpdb->terms t ON (tt.term_id = t.term_id) 
     WHERE post_content REGEXP '>(.*) $variable (.*)<' 
     AND tt.taxonomy = 'category' 
     AND t.term_id = '###' 
"); 

查詢的最後一行是我應該取代###與所需的WordPress的類別ID號的地方。