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

求助:在WordPress中用PHP从数组获取单个值的问题

解决WordPress中从数据库查询结果获取单个值的问题

我看你的代码里有几个小细节出错了,导致没法正确取出目标值,咱们一步步来修正:

先说说你代码里的问题点:

  • 循环里误用了未定义的变量$cand,但你foreach的当前循环变量明明是$print
  • 对象属性的访问语法错了:对于stdClass Object这种对象,正确写法是->属性名,而不是->['属性名'](那是数组的访问方式)
  • 如果你的user_id在wp_confirmation表里是唯一的,其实根本没必要用foreach循环,直接取单条记录效率更高

修正后的代码方案

方案1:保留get_results写法(适合可能返回多条记录的场景)

$result = $wpdb->get_results("SELECT * FROM wp_confirmation WHERE user_id=$user_id");
if($result) {
    // 直接取第一条记录的Cand值
    echo $result[0]->Cand;
    
    // 如果需要遍历多条记录,正确写法是:
    // foreach ( $result as $item ) {
    //     echo $item->Cand;
    // }
}

方案2:用get_row获取单条记录(更推荐,当user_id唯一时)

get_results返回的是结果数组,而如果user_id对应唯一一条记录,用$wpdb->get_row会直接返回单个对象,代码更简洁:

$row = $wpdb->get_row("SELECT * FROM wp_confirmation WHERE user_id=$user_id");
if($row) {
    echo $row->Cand;
}

额外提醒:SQL注入风险

你的原始SQL语句存在安全隐患,最好用WordPress自带的参数化查询来避免:

// 用prepare方法处理参数,更安全
$row = $wpdb->get_row(
    $wpdb->prepare("SELECT * FROM wp_confirmation WHERE user_id=%d", $user_id)
);
if($row) {
    echo $row->Cand;
}

这里的%d表示把$user_id当作整数处理,如果是字符串类型的字段,就用%s,浮点数用%f。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:52:46