为了账号安全,请及时绑定邮箱和手机立即绑定

阻止用户多次点赞帖子

阻止用户多次点赞帖子

PHP
青春有我 2023-04-15 17:40:56
我有一个喜欢按钮,它允许用户喜欢我网站上的帖子。如果用户喜欢他们之前不喜欢的帖子,它将 +1,如果他们再次按下相同的喜欢按钮,它将 -1。这在我笔记本电脑上的虚拟服务器上工作。但是,相同的代码在我的实时站点上不起作用。在我的实时网站上,用户可以多次喜欢同一个帖子,这不是我想要的。我正在使用 JQuery Ajax 调用来触发一些 MySQL 代码的 PHP 文件。任何人都可以看到下面的 PHP 有什么明显的错误吗?include ("../con/config.php");$postid = $_POST['postid'];$userid = $_POST['userid'];$query = $con->prepare("SELECT COUNT(*) AS CntPost FROM Likes WHERE UserID = ? AND PostID = ?");$query->bind_param('ss',$userid,$postid);$query->execute();$result = $query->get_result();$fetchdata = $result->fetch_assoc();$count = $fetchdata['CntPost'];if($count == 0){     $stmt = $con->prepare("INSERT INTO Likes(UserID,PostID) VALUES(?,?)");     $stmt->bind_param("ss", $userid, $postid);     $stmt->execute();} else {     $stmt = $con->prepare("DELETE FROM Likes WHERE UserID = ? AND PostID = ?");     $stmt->bind_param("ss", $userid, $postid);     $stmt->execute();}// count numbers of likes in post$query = $con->prepare("SELECT COUNT(*) AS CntLike FROM Likes WHERE PostID = ?");$query->bind_param('s', $postid);$query->execute();$result = $query->get_result();$fetchlikes = $result->fetch_assoc();$totalLikes = $fetchlikes['CntLike'];$return_arr = array("likes"=>$totalLikes,"type"=>$count);echo json_encode($return_arr);
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

设法解决了它。问题出在 UserID 的 MySQL 数据库列本身。该列的字符数不够长,并且截断了我使用会话 ID 填充的用户 ID。我修改了数据库中的这个字段以允许 sessionID 的长度。



查看完整回答
反对 回复 2023-04-15
?
HUH函数

TA贡献1836条经验 获得超4个赞

也许此语句 "SELECT COUNT(*) AS CntLike FROM Likes WHERE PostID = ?"需要 WHERE 语句中的 UserID,以便您知道该特定 PostID 中的特定 UserID



查看完整回答
反对 回复 2023-04-15
  • 2 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信