php 关注实现
PHP 关注功能的实现
关注功能是社交平台或用户互动系统中常见的需求,通常涉及用户之间的关注关系管理。以下是实现关注功能的几种常见方法:
数据库设计 创建两张表:用户表(users)和关注关系表(follows)。用户表存储用户基本信息,关注关系表记录用户之间的关注关系。
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);
CREATE TABLE follows (
follower_id INT NOT NULL,
followee_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (follower_id, followee_id),
FOREIGN KEY (follower_id) REFERENCES users(id),
FOREIGN KEY (followee_id) REFERENCES users(id)
);
关注操作实现 使用PHP处理关注请求,检查是否已存在关注关系,避免重复关注。
function followUser($followerId, $followeeId) {
global $pdo;
$stmt = $pdo->prepare("SELECT * FROM follows WHERE follower_id = ? AND followee_id = ?");
$stmt->execute([$followerId, $followeeId]);
if ($stmt->rowCount() > 0) {
return false; // 已关注
}
$stmt = $pdo->prepare("INSERT INTO follows (follower_id, followee_id) VALUES (?, ?)");
return $stmt->execute([$followerId, $followeeId]);
}
取消关注实现 删除关注关系表中的对应记录。

function unfollowUser($followerId, $followeeId) {
global $pdo;
$stmt = $pdo->prepare("DELETE FROM follows WHERE follower_id = ? AND followee_id = ?");
return $stmt->execute([$followerId, $followeeId]);
}
获取关注列表 查询某个用户关注的所有用户。
function getFollowingList($userId) {
global $pdo;
$stmt = $pdo->prepare("
SELECT u.id, u.username
FROM follows f
JOIN users u ON f.followee_id = u.id
WHERE f.follower_id = ?
");
$stmt->execute([$userId]);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
获取粉丝列表 查询关注某个用户的所有用户。

function getFollowerList($userId) {
global $pdo;
$stmt = $pdo->prepare("
SELECT u.id, u.username
FROM follows f
JOIN users u ON f.follower_id = u.id
WHERE f.followee_id = ?
");
$stmt->execute([$userId]);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
检查关注状态 判断两个用户之间是否存在关注关系。
function isFollowing($followerId, $followeeId) {
global $pdo;
$stmt = $pdo->prepare("SELECT * FROM follows WHERE follower_id = ? AND followee_id = ?");
$stmt->execute([$followerId, $followeeId]);
return $stmt->rowCount() > 0;
}
性能优化建议 对于大型系统,可以考虑以下优化措施:
- 为关注关系表添加索引
- 实现分页查询关注列表和粉丝列表
- 考虑使用缓存减少数据库查询
- 对于频繁访问的关注状态,可以使用Redis等缓存系统
安全注意事项
- 验证用户身份,确保只有登录用户能执行关注操作
- 防止用户关注自己
- 对输入参数进行验证和过滤,防止SQL注入
通过以上方法可以实现基本的关注功能,根据具体需求可以进一步扩展功能,如关注通知、共同关注等社交特性。






