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

在WordPress中通过MySQL调用get_current_user_id()获取用户关联数据问题

解决MySQL查询当前登录用户数据的问题

核心问题

你直接在SQL语句里使用get_current_user_id()、current_user->ID这类写法是无效的——MySQL本身不认识PHP/WordPress的函数或变量,两者属于不同的运行环境,必须通过PHP先获取用户ID,再将这个值传入SQL查询中。

正确实现方式(WordPress环境下)

从表名uwp_usermeta和你尝试的函数来看,你是在WordPress环境中操作,推荐用WordPress自带的$wpdb数据库类执行查询,既安全又符合规范:

  1. 获取当前登录用户ID
    用WordPress官方函数get_current_user_id()获取ID,未登录用户会返回0:
<?php
// 获取当前登录用户ID
$user_id = get_current_user_id();
if ($user_id === 0) {
    // 用户未登录的处理逻辑,比如提示登录
    exit('请先登录');
}
?>
  1. 查询当前用户的元数据
    用参数绑定的方式执行SQL,避免SQL注入风险:
<?php
// 查询当前用户的user_id和custom字段
$user_meta = $wpdb->get_row(
    $wpdb->prepare(
        "SELECT user_id, custom FROM uwp_usermeta WHERE user_id = %d",
        $user_id
    )
);

// 输出结果示例
if ($user_meta) {
    echo "用户ID:{$user_meta->user_id},Custom值:{$user_meta->custom}";
} else {
    echo "该用户无相关元数据";
}
?>
  1. 修正后的平均值查询
    你的第二个SQL存在语法错误(AS custom是表别名,导致avg(custom)会错误引用表而非字段),修正后如果是计算所有用户custom字段的平均值:
<?php
$average = $wpdb->get_row(
    "SELECT 'average' AS user_id, avg(custom) AS average_custom FROM uwp_usermeta"
);

// 输出平均值
if ($average) {
    echo "所有用户Custom平均值:{$average->average_custom}";
}
?>

关键说明

  • 必须将代码放在.php文件中,开头要加<?php标签(PHP代码的标识),纯SQL文件无法直接调用PHP/WordPress的函数。
  • 不要直接拼接用户ID到SQL语句中,一定要用$wpdb->prepare()做参数绑定,防止SQL注入攻击。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:50:16