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,
following_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (follower_id, following_id),
FOREIGN KEY (follower_id) REFERENCES users(id),
FOREIGN KEY (following_id) REFERENCES users(id)
);
关注操作 通过INSERT语句向关注关系表中添加记录,表示一个用户关注另一个用户。

function followUser($followerId, $followingId) {
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$stmt = $pdo->prepare("INSERT INTO follows (follower_id, following_id) VALUES (?, ?)");
$stmt->execute([$followerId, $followingId]);
return $stmt->rowCount() > 0;
}
取消关注操作 使用DELETE语句从关注关系表中移除记录,表示取消关注。

function unfollowUser($followerId, $followingId) {
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$stmt = $pdo->prepare("DELETE FROM follows WHERE follower_id = ? AND following_id = ?");
$stmt->execute([$followerId, $followingId]);
return $stmt->rowCount() > 0;
}
检查关注状态 查询关注关系表,判断两个用户之间是否存在关注关系。
function isFollowing($followerId, $followingId) {
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$stmt = $pdo->prepare("SELECT COUNT(*) FROM follows WHERE follower_id = ? AND following_id = ?");
$stmt->execute([$followerId, $followingId]);
return $stmt->fetchColumn() > 0;
}
获取关注列表 查询某个用户关注的所有用户或粉丝列表。
function getFollowingList($userId) {
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$stmt = $pdo->prepare("SELECT u.* FROM users u JOIN follows f ON u.id = f.following_id WHERE f.follower_id = ?");
$stmt->execute([$userId]);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
function getFollowerList($userId) {
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$stmt = $pdo->prepare("SELECT u.* FROM users u JOIN follows f ON u.id = f.follower_id WHERE f.following_id = ?");
$stmt->execute([$userId]);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
注意事项 确保在操作前验证用户ID的有效性,防止无效操作。对于大规模用户系统,考虑添加索引优化查询性能。实现关注功能时,可以结合AJAX实现无刷新操作,提升用户体验。






