【问题标题】:WP Sql query - this has to be correct :-(WP Sql 查询 - 这必须是正确的 :-(
【发布时间】:2017-08-13 03:31:29
【问题描述】:

我正在尝试在 Wordpress 中执行非常简单的 SQL 查询。我不知道为什么,但这不起作用:-(

$my_query = ("SELECT DISTINCT meta_value FROM wp_usermeta WHERE meta_key = 'schoolcountry'");
    $vysledek = $wpdb->get_results($my_query);
    foreach ($vysledek as $value){
       echo $value->schoolcountry . ", ";
    }

我在名为 wp_usermeta 的表中,其中有两列 - “meta_key”和“meta_value”。而且我需要根据它的“meta_key”来回显meta_value。

所以我的 meta_key 被称为“schoolcountry”,值应​​该是“CZ”......但是这段代码什么也不返回“, , , , , , , :-(

不知道怎么回事?

表结构图片:

以及 var_dump 的图片:

【问题讨论】:

  • 我的猜测是查询从未真正运行过,可能是由于连接问题,或者它确实运行了,但表中没有匹配的数据。查询本身对我来说很好。
  • 你声明global $wpdb了吗?
  • 这也是我的猜测......但一切运行良好......查询逻辑必须有一些东西:-(
  • 是的 - 声明了全局 $wpdb。
  • 试试 echo $value->meta_value 。 ", ";

标签: php mysql wordpress


【解决方案1】:

查询本身很好。问题在于您尝试显示结果的方式。

您正尝试通过其meta_key(学校国家/地区)访问该值。您尝试访问的属性不存在。您需要改用列名 (meta_value)。

例子:

foreach ( $vysledek as $value ) {
    echo $value->meta_value . ", ";
}

值得提出的另一点是,通过为循环中的每个值附加逗号,您将在末尾有一个额外的逗号。

value1, value2, value3, 

我很想使用implode() 来解决这个问题。

echo implode( ', ', array_map( function( $v ) {
    return $v->meta_value;
}, $vysledek );

这里我们使用array_map 返回一个包含所有元值的新数组。然后,Implode 会将它们连接在一起,末尾没有多余的逗号。

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 2011-08-21
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多