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

MySQL中如何通过已知同行某列值获取另一列对应数据?

解决WordPress中通过fix_id获取对应fix_against值的问题

你这段代码没生效主要是两个小问题导致的,我帮你拆解下并给出修正方案:

问题1:返回值处理错误

$wpdb->get_results()默认返回的是对象数组(或者关联数组,取决于传入的第二个参数),直接echo数组只会输出Array,而不是你要的fix_against字段值。如果只需要单个字段的单个结果,用$wpdb->get_var()更合适——这个方法专门用来获取查询结果中的单个值,简洁又高效。

问题2:prepare方法的占位符使用错误

$wpdb->prepare()的核心作用是防止SQL注入,正确用法是用占位符替代变量,而不是把变量直接塞进SQL语句加单引号。你的fix_id是整数类型,应该用%d作为占位符,prepare会自动帮你处理参数的类型和转义。

修正后的完整代码

global $wpdb;
$known_value = 1837;

// 使用%d整数占位符,将变量作为第二个参数传入prepare
$sql = $wpdb->prepare( "SELECT fix_against FROM fixtures WHERE fix_id = %d", $known_value );

// get_var直接获取单个字段值
$result = $wpdb->get_var( $sql );

// 输出结果,同时处理无匹配记录的情况
if ( $result ) {
    echo $result; // 此时会输出Aus Vs. Eng
} else {
    echo "未找到对应比赛记录";
}

额外补充:如果一定要用get_results怎么办?

如果你因为某些场景必须用get_results(),也可以这样处理返回值:

$result = $wpdb->get_results( $sql, ARRAY_A ); // 指定返回关联数组
if ( ! empty( $result ) ) {
    echo $result[0]['fix_against'];
}

不过这种写法不如get_var()直接,建议优先用前者。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:08:38