我通过自定义Wordpress插件使用核心cron执行此查询:
// MAKE SQL CALL
$SQL = "SELECT ".$wpdb->prefix."postmeta.post_id FROM ".$wpdb->prefix."postmeta
INNER JOIN ".$wpdb->prefix."posts ON (".$wpdb->prefix."posts.ID = ".$wpdb->prefix."postmeta.post_id )
WHERE ".$wpdb->prefix."postmeta.meta_key = '".$core_admin_values['listing_expiration']['key']."'
AND ".$wpdb->prefix."posts.post_status = 'publish'
AND ".$wpdb->prefix."postmeta.post_id = (SELECT ".$wpdb->prefix."postmeta.post_id FROM ".$wpdb->prefix."postmeta WHERE ".$wpdb->prefix."postmeta.meta_key = 'listing_status' AND ".$wpdb->prefix."postmeta.meta_value != 1)
AND ".$wpdb->prefix."posts.post_type = '".$core_admin_values['listing_expiration']['taxonomy']."_type'
AND DATE(".$wpdb->prefix."postmeta.meta_value) < DATE(NOW())";
$expired_listings = (array)$wpdb->get_results($SQL);
但是返回此错误:
在stderr中发送的FastCGI:“PHP消息:WordPress子查询的数据库错误为SELECT返回多行
怎么解决这个?我在Stack中尝试了类似问题的一些解决方案,但它仍然失败了 .
2 回答
为了便于阅读,我重新格式化了您的查询 .
我怀疑你的问题源于你的where子句中的子查询 .
并且这个块返回了不止一个结果 . 如果要匹配多个结果,请将“=”更改为“in”,如下所示:
尝试在子查询上添加
LIMIT
// MAKE SQL CALL