posts.* FROM $wpdb->posts INNER JOIN $wpdb->term_relationship-6ren">
gpt4 book ai didi

php - 自定义 SQL 从类别数组中获取帖子,并从排除的类别中返回 id。怎么了?

转载 作者:行者123 更新时间:2023-11-29 22:52:15 25 4
gpt4 key购买 nike

我有这个查询:

 $querystr = "SELECT  $wpdb->posts.* FROM  $wpdb->posts 
INNER JOIN $wpdb->term_relationships
ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
INNER JOIN $wpdb->postmeta
ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id )
INNER JOIN $wpdb->postmeta AS mt1
ON ( $wpdb->posts.ID = mt1.post_id )
WHERE 1=1 AND $wpdb->term_relationships.term_taxonomy_id
IN (".implode(',',array_unique($categories)).")
AND $wpdb->posts.post_type = 'post'
AND ($wpdb->posts.post_status = 'publish')
AND ( ( $wpdb->postmeta.meta_key = 'joke_type'
AND CAST($wpdb->postmeta.meta_value AS CHAR) = '".$type."' )
AND ( mt1.meta_key = 'joke_rating' AND CAST(mt1.meta_value AS SIGNED) >= '3' ) )
GROUP BY $wpdb->posts.ID ORDER BY $wpdb->posts.ID DESC";

当我打印字符串时,它可以正确计算,但是当执行时,它会抛出来自未包含在此选择中的类别的 ID,例如类别 58,我已经检查了 10000 次,并且我确信它不在 SQL 字符串中。我也在数据库中运行了这个,结果相同..我可以看到不属于这些类别的帖子。

我在这里做错了什么?

这是查询字符串:

SELECT wp_njkf_posts.* FROM wp_njkf_posts 
INNER JOIN wp_njkf_term_relationships
ON (wp_njkf_posts.ID = wp_njkf_term_relationships.object_id)
INNER JOIN wp_njkf_postmeta
ON ( wp_njkf_posts.ID = wp_njkf_postmeta.post_id )
INNER JOIN wp_njkf_postmeta AS mt1
ON ( wp_njkf_posts.ID = mt1.post_id )
WHERE 1=1
AND wp_njkf_term_relationships.term_taxonomy_id
IN (
139,133,45,135,38,40,69,85,112,123,53,55,81,36,121,95,83,9,79,35,104,
60,11,101,63,30,122,68,12,98,32,125,124,119,88,129,61,113,108,100,99,

126,140,131,13,14,105,15,16,49,43,41,74,114,62,94,65,141,17,115,51,18,
19,72,109,93,87,56,20,111,67,34,66,82,21,22,84,75,71,120,46,118,
31,86,70,23,90,110,78,92,24,91,89,73,47,64,29,107,97,130,
1,44,59,76,77,80,54,25)
AND wp_njkf_posts.post_type = 'post'
AND (wp_njkf_posts.post_status = 'publish')
AND ( ( wp_njkf_postmeta.meta_key = 'joke_type'
AND CAST(wp_njkf_postmeta.meta_value AS CHAR) = 'joke' )
AND ( mt1.meta_key = 'joke_rating'
AND CAST(mt1.meta_value AS SIGNED) >= '3' ) )
GROUP BY wp_njkf_posts.ID ORDER BY wp_njkf_posts.ID DESC

后来编辑,也尝试过这个。这将返回 0 行:

    SELECT p . * 
FROM wp_njkf_posts p, wp_njkf_term_relationships r, wp_njkf_postmeta pm
WHERE p.ID = r.object_id
AND p.ID = pm.post_id
AND r.term_taxonomy_id
IN ( 139, 133, 45, 135, 38, 40, 69, 85, 112, 123, 53, 55, 81, 36, 121, 95, 83, 9, 79, 35,
104, 60, 11, 101, 63, 30, 122, 68, 12, 98, 32, 125, 124, 119, 88, 129, 61, 113, 108, 100, 99,
126, 140, 131, 13, 14, 105, 15, 16, 49, 43, 41, 74, 114, 62, 94, 65, 141, 17, 115, 51, 18, 19,
72, 109, 93, 87, 56, 20, 111, 67, 34, 66, 82, 21, 22, 84, 75, 71, 120, 46, 118, 31, 86, 70, 23,
90, 110, 78, 92, 24, 91, 89, 73, 47, 64, 29, 107, 97, 130, 1, 44, 59, 76, 77, 80, 54, 25 )
AND p.post_type = 'post'
AND p.post_status = 'publish'
AND (
pm.meta_key = 'joke_type'
AND CAST( pm.meta_value AS CHAR ) = 'joke'
AND pm.meta_key = 'joke_rating'
AND CAST( pm.meta_value AS SIGNED ) >= '3'
)
GROUP BY p.ID
ORDER BY p.ID DESC
LIMIT 0 , 30

最佳答案

问题出在我的数据库中。解决了。该查询作为第一个变体运行良好。

关于php - 自定义 SQL 从类别数组中获取帖子,并从排除的类别中返回 id。怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28850938/

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