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

获取用户关联全部关注者数据异常问题排查

问题:每个用户仅显示单个关注者数据的修复方案

问题根源

你的PHP代码中,while循环内直接将$followers[$OutputData['user_id']]赋值为单个关注者数组,导致同一user_id下的后续关注者数据会覆盖之前的条目,最终每个用户仅保留了最后一条关注者记录。

修正后的PHP代码

require_once("config.php");
class FollowerMockApi {
    public static function Select(){
        $db = new connect();
        $followers = array();
        // 用显式JOIN语法+指定字段,避免字段名冲突
        $stmt = $db->prepare('SELECT followers.user_id, user.id AS follower_id, user.name AS follower_name 
                              FROM followers 
                              INNER JOIN user ON followers.follower_id = user.id');
        $stmt->execute();
        
        while($OutputData = $stmt->fetch(PDO::FETCH_ASSOC)) {
            // 追加关注者到对应用户的数组,而非覆盖
            $followers[$OutputData['user_id']][] = array(
                'id' => $OutputData['follower_id'],
                'follower' => $OutputData['follower_name']
            );
        }
        
        return json_encode($followers);
    }
}

// 先设置响应头,再输出JSON(符合HTTP规范)
header('Content-Type: application/json');
echo FollowerMockApi::Select();

修改细节说明

  1. 数组赋值逻辑调整:把$followers[$OutputData['user_id']] = array(...)改为$followers[$OutputData['user_id']][] = array(...),实现同一用户下的关注者数据追加存储。
  2. SQL语句优化:使用显式INNER JOIN替代隐式连接,同时给重复字段(如id)设置别名,避免取值混淆。
  3. 响应头顺序修正:将header('Content-Type: application/json')移到echo之前,确保响应头在输出内容前发送。

原数据表结构(SQL)

CREATE TABLE `followers` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `user_id` int(11) NOT NULL,
 `follower_id` int(11) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8mb4;

CREATE TABLE `user` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(128) NOT NULL,
 `lastname` varchar(128) NOT NULL,
 `email` varchar(255) NOT NULL,
 `password_hash` varchar(255) NOT NULL,
 `ip` varchar(255) NOT NULL,
 `profile_image` varchar(1000) NOT NULL,
 `cover_image` varchar(1000) NOT NULL,
 `verified` tinyint(1) DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=115 DEFAULT CHARSET=utf8mb4;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:15:24