2017-02-13 82 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号的地方。