gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:13:49 27 4
gpt4 key购买 nike

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com