You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SQL获取同一用户下相同meta_key的所有值并转为PHP数组

问题说明

现有wp_usermeta表结构如下:

user_id  |  meta_key  |  meta_value
-------------------------------
1        |  car       |  mercedes
2        |  hotel     |  meridia
2        |  street    |  hillsroad
2        |  car       |  audi
1        |  car       |  ford

需要按指定用户ID获取所有meta_key为car的meta_value,组成如下格式的PHP数组:

$cars = array('mercedes', 'ford'); // 以用户ID=1为例

但当前使用的查询只能得到一个结果:

$cars = $wpdb->get_results('SELECT car FROM wp_usermeta WHERE user_id = '.$user->ID);
解决方法
  1. 修正SQL查询逻辑
    原有查询里的SELECT car是错误的——表中没有名为car的字段,你需要筛选meta_key等于car的记录,再取出对应的meta_value字段。

  2. 用$wpdb->get_col()直接生成目标数组
    get_results()会返回包含对象或数组的集合,而get_col()可以直接返回单列数据的数组,更贴合需求。同时记得用参数绑定避免SQL注入:

$user_id = $user->ID;
$cars = $wpdb->get_col(
    $wpdb->prepare(
        "SELECT meta_value FROM wp_usermeta WHERE user_id = %d AND meta_key = 'car'",
        $user_id
    )
);

执行后,当user_id=1时,$cars就会是array('mercedes', 'ford'),完全符合你的需求。

  1. 原有查询出错的原因
    你的SQL里SELECT car是无效写法,数据库会把car当作字符串处理(不同数据库表现略有差异),所以实际只返回了一个固定的无效值,而非表中的真实数据。

内容的提问来源于stack exchange,提问作者Pepe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:42:39