如何用PHP匹配WordPress用户ID与其他数据表ID并展示对应数据
WordPress双表关联匹配校验修复方案
现有代码核心问题
- 调用
get_userdata()返回的是WP_User用户对象,无法直接和整数类型的ID做等值判断,需要提取对象的ID属性参与比对 - 两次查询
wp_h5p_results表均未加WHERE条件,默认只会返回整张表的第一条记录,无法匹配到当前登录用户的专属数据 - 未主动获取当前登录用户的ID,代码中的
$user_id变量没有赋值来源
修复后可用代码
假设wp_h5p_results表中存储关联WordPress用户ID的字段为user_id(如果你的表实际字段名不同,替换成对应字段即可),修复后的代码如下:
// 获取当前登录用户ID,未登录时返回0 $current_user_id = get_current_user_id(); if ($current_user_id === 0) { echo '<p>请先登录账号</p>'; return; } global $wpdb; // 直接查询对应用户的分数,单次SQL即可完成匹配+取值 $total_score = $wpdb->get_var( $wpdb->prepare( "SELECT score FROM wp_h5p_results WHERE user_id = %d", $current_user_id ) ); if ($total_score !== null) { echo "<p>Your Score {$total_score}</p>"; } else { echo 'No user with such ID'; }
代码说明
- 用
get_current_user_id()主动获取当前登录用户的ID,兼容未登录场景的判断 - 用
$wpdb->prepare()做SQL预处理,避免SQL注入风险,符合WordPress代码规范 - 单次查询即可完成匹配和取值,不需要分开两次查询数据库,执行效率更高
内容的提问来源于stack exchange,提问作者Imran Yunus
相关产品推荐
相关产品推荐

