首页 > 解决方案 > 如何使用全局 $wpdb 查询运行 SQL 查询并回显结果

问题描述

我正在尝试使用以下 SQL 查询来计算事件总数。我正在使用 global $wpdb 来回显结果并将它们存储到变量中。

global $wpdb;
$current_d_t = strtotime(date("y-m-d"));
$sql = "SELECT COUNT(post.ID) as eventCountUpcoming FROM wp_posts AS post LEFT JOIN wp_postmeta AS meta ON post.ID = meta.post_id WHERE post.post_type =  'ajde_events' AND meta.meta_key = 'evcal_erow' AND meta.meta_value > $current_d_t  AND post.post_status =  'publish' GROUP BY post.ID";
$result = $wpdb->get_results($sql, ARRAY_A);
$result_more = $result->fetch_assoc();
$countEvent = $result_more['eventCountUpcoming'];

收到此错误

调用数组上的成员函数 fetch_assoc()

也尝试了每个循环,使用以下代码,

foreach ($result  as $result_more){
$countEvent = $result_more['eventCountUpcoming'];
}

但收到此错误:

在此处输入图像描述

标签: wordpress

解决方案


如果您只是在寻找一个变量作为结果。您可以尝试使用$wpdb->get_var()

global $wpdb;
$current_d_t = strtotime(date("y-m-d"));
$sql = "SELECT COUNT(post.ID) as eventCountUpcoming
    FROM {$wpdb->posts} AS post LEFT JOIN {$wpdb->postmeta} AS meta
    ON post.ID = meta.post_id
    WHERE post.post_type = 'ajde_events'
      AND meta.meta_key = 'evcal_erow'
      AND meta.meta_value
        > {$current_d_t}
      AND post.post_status = 'publish';"
$result = $wpdb->get_var($sql);

那么$result应该是你的计数。

如果您只是计算 Post ID,则不需要 Groupby


推荐阅读