0
我试图通过WordPress运行MySQL查询,带回我想删除的帖子列表,因为他们没有“喜欢”投票(使用别人的插件数据)。该查询在phpMyAdmin中完美工作,但在通过WP运行时出现语法错误......我完全没有理由这么做。自定义WordPress查询奇怪的MySQL错误
这里的查询代码,检查岗位超过30天没有相应的“像”,在wti_like_post条目(无论正或负):
$novotesquery = "SELECT * FROM $wpdb->posts
WHERE $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_date < DATE_SUB(NOW(), INTERVAL 30 DAY)
AND $wpdb->posts.ID NOT IN
(SELECT DISTINCT post_id FROM $wpdb->wti_like_post)" ;
$result = $wpdb->get_results($novotesquery);
语法错误说,有一个问题就SQL的最后一行(括号中的SELECT):“您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获得在第6行''附近使用的正确语法'”。
当我在phpMyAdmin中运行查询(用表前缀替换“$ wpdb->”)时,它会起作用。如果有人可以告诉我为什么SQL查询将在服务器上运行,而不是在WP中运行,那么我会很感激。
在此先感谢。
wp_wti_like_post在标准安装 - 它取决于配置中定义的数据库前缀。 –
感谢评论和回答,我发现什么是错的。像往常一样,假设是所有拧紧的母亲! 我假设“$ wpdb-> wti_like_post”转换为“DBprefix_wti_like_post”,因为“$ wpdb-> posts”转换为“DBprefix_posts”。我的假设是错误的。据我所知,它根本不会转换为任何东西,大概是因为它不是内置的WordPress表格。 需要的是“** {$ wpdb-> prefix} wti_like_post **”,这会强制数据库前缀到位。 现在有效。 非常感谢两位评论员提出的心理提示,询问价值如何出现! –