mysql - 我在 WordPress Mysql 的 MySQL 查询中哪里出错了?

标签 mysql wordpress

SELECT * FROM wp_posts 
   INNER JOIN wp_term_relationships 
           ON ( wp_posts.ID = wp_term_relationships.object_id)
   INNER JOIN wp_term_relationships 
           ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id 
        WHERE term_id = 1 AND taxonomy  = 'category';

我想通过这个查询获取帖子列表。谁能解决这个问题吗?

最佳答案

@史蒂文·斯 PIL 伯格:

您的错误是指定了 wp_term_relationships 两次,而不是指定 wp_term_relationships 一次和 wp_term_taxonomy 一次。这是一个有效的查询:

SELECT * FROM wp_posts 
   INNER JOIN wp_term_relationships 
           ON wp_posts.ID = wp_term_relationships.object_id
   INNER JOIN wp_term_taxonomy
           ON wp_term_taxonomy.term_taxonomy_id = 
              wp_term_relationships.term_taxonomy_id 
        WHERE term_id = 1 AND taxonomy  = 'category';

但是,如果您计划在 .php 文件中使用它以与 WordPress 一起使用,我建议您使用不同的方法,例如使用 WP_Query 并启动与此:

$term = get_term_by('id',1);
$query = new WP_Query(array(
  'taxonomy'=>'category',
  'term'=>$term->slug,
));
print_r($query->posts);  

您可以在 query_posts() 上找到 WP_Query 的其他参数。 Codex 页面(参数是相同的。) 您可能还需要使用其他几个参数来微调您的查询。

当然,如果您出于某种原因必须使用直接 SQL,那么至少使用 $wpdb 对象,这样您就不必担心前缀,如下所示:

  global $wpdb;
  $sql = <<<SQL
SELECT * FROM {$wpdb->posts} 
   INNER JOIN {$wpdb->term_relationships} 
           ON {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id
   INNER JOIN {$wpdb->term_taxonomy}
           ON {$wpdb->term_taxonomy}.term_taxonomy_id = 
              {$wpdb->term_relationships}.term_taxonomy_id 
        WHERE 1=1
          AND {$wpdb->term_taxonomy}.term_id = 1 
          AND {$wpdb->term_taxonomy}.taxonomy  = 'category'
SQL;
  $posts = $wpdb->get_results($sql);

希望这有帮助。

-迈克

关于mysql - 我在 WordPress Mysql 的 MySQL 查询中哪里出错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4767623/

相关文章:

php - password_verify() 在 php 中不起作用

mysql - 如何在mysql中获取关于日期的记录总和

mysql - 如何设置 Sequelize.js 以流式传输数据而不是 promise /回调?

php - do_action 和 add_action 如何工作?

css - 在类中为 ul 和 li 设置 CSS 属性

wordpress - 如何 Hook 到Wordpress缩略图生成

php - 这个 SQL 查询有什么问题?

mysql - 用另一个表消除一个表中的值。 super 慢

php - Wordpress - 通过 slug 获取标签 ID

javascript - 这段代码在我的 Wordpress 博客上有什么作用?恶意软件?