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

PHP/SQL技术实现:检测用户是否已点赞帖子,是则取消点赞

嘿,我来帮你搞定这个点赞/取消点赞的功能!结合你现有的Likes表和Like.class.php类,我们只需要补充几个关键方法,再整合逻辑就能实现需求。

实现步骤

1. 给Like.class.php补充核心方法

首先需要在你的类里新增两个方法:一个检测用户是否已点赞,一个执行取消点赞操作。

检测是否已点赞:isLiked($postId)

这个方法会根据当前登录用户ID和目标帖子ID,查询Likes表是否存在对应记录:

public function isLiked($postId) {
    // 假设你的类已持有数据库连接实例(比如$this->db)
    // 从会话中获取当前登录用户ID,根据你的实际认证方式调整
    $userId = $_SESSION['user_id'];
    
    $sql = "SELECT 1 FROM Likes WHERE user_id = :user_id AND post_id = :post_id LIMIT 1";
    $stmt = $this->db->prepare($sql);
    $stmt->bindParam(':user_id', $userId, PDO::PARAM_INT);
    $stmt->bindParam(':post_id', $postId, PDO::PARAM_INT);
    $stmt->execute();
    
    // 存在记录则返回true(已点赞),否则返回false
    return $stmt->rowCount() > 0;
}

取消点赞:unlike($postId)

这个方法负责删除用户对目标帖子的点赞记录:

public function unlike($postId) {
    $userId = $_SESSION['user_id'];
    
    $sql = "DELETE FROM Likes WHERE user_id = :user_id AND post_id = :post_id";
    $stmt = $this->db->prepare($sql);
    $stmt->bindParam(':user_id', $userId, PDO::PARAM_INT);
    $stmt->bindParam(':post_id', $postId, PDO::PARAM_INT);
    
    // 返回删除操作是否成功执行
    return $stmt->execute();
}

2. 业务逻辑整合(调用示例)

现在你可以在业务代码里调用这些方法,实现“检测-判断-执行”的完整流程:

// 实例化Like类
$likeHandler = new Like();
$targetPostId = $_GET['post_id']; // 替换为实际的帖子ID来源

// 核心逻辑:判断并执行对应操作
if ($likeHandler->isLiked($targetPostId)) {
    // 已点赞,执行取消
    $likeHandler->unlike($targetPostId);
    echo "已取消点赞";
    // 前后端分离场景建议返回JSON:echo json_encode(['status' => 'success', 'action' => 'unliked']);
} else {
    // 未点赞,执行添加点赞(用你已有的Addlike方法)
    $likeHandler->Addlike($targetPostId);
    echo "已点赞";
    // 前后端分离场景建议返回JSON:echo json_encode(['status' => 'success', 'action' => 'liked']);
}

额外优化建议

  • 数据库层面防重复:给Likes表添加user_id和post_id的联合唯一索引,这样能从根源避免同一个用户重复点赞同个帖子,即使代码层面有疏漏也能保证数据一致性。
  • 安全注意:不要直接使用用户提交的user_id,一定要从可信的来源(比如会话、认证令牌)获取,防止SQL注入或越权操作。
  • 状态同步:如果是前端交互场景,执行操作后要同步更新页面上的点赞按钮状态和点赞数,提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:46:32