【问题标题】:How to use global $wpdb query to run SQL query and echoing the result如何使用全局 $wpdb 查询运行 SQL 查询并回显结果
【发布时间】:2021-10-18 04:56:49
【问题描述】:

我正在尝试使用以下 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'];
}

但收到此错误:

【问题讨论】:

  • 请将代码和数据添加为文本 (using code formatting),而不是图像。图片:A)不允许我们复制粘贴代码/错误/数据进行测试; B) 不允许根据代码/错误/数据内容进行搜索;和many more reasons。除了代码格式的文本之外,只有在图像添加了一些重要的东西,而不仅仅是文本代码/错误/数据传达的内容时,才应该使用图像。

标签: wordpress


【解决方案1】:

$result = $wpdb->get_results($sql, ARRAY_A); 返回一个结果数组。

为了回显结果,请尝试循环数组:

$result = $wpdb->get_results($sql, ARRAY_A);
foreach ($result  as $res){
   var_dump($result);
}

【讨论】:

    【解决方案2】:

    如果您只是在寻找一个变量作为结果。你可以试试$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 应该是你的计数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 2012-08-14
      • 2021-09-08
      • 1970-01-01
      相关资源
      最近更新 更多