Php中的Like系统

Php中的Like系统,php,mysql,Php,Mysql,嘿,我想用php创建一个类似的系统,但我面临一些问题 我怎样才能创建一个每个用户只允许一个Like的Like系统 这是我的密码 <?php if(isset($_POST['like'])){ $q = "SELECT * FROM likes WHERE `username` = '".$_SESSION['recieveruser']."'"; $r = mysqli_query($con, $q); $count =

嘿,我想用php创建一个类似的系统,但我面临一些问题

我怎样才能创建一个每个用户只允许一个Like的Like系统

这是我的密码

<?php
if(isset($_POST['like'])){
    $q = "SELECT * FROM likes WHERE `username` = '".$_SESSION['recieveruser']."'";
    $r = mysqli_query($con, $q);
    $count  = mysqli_num_rows($r);
    if ($count == "0") {
        $q1    = "INSERT INTO likes (`username`, `likecount`)VALUES('".$_SESSION['recieveruser']."', '1')";
        $result1 = mysqli_query($con, $q1);
    } else {
        while($row = mysqli_fetch_array($r)) {
            $liked = $row['likecount'];
        }
        $likeus = ++$liked;
        $q2    = "UPDATE likes SET likecount='".$likeus."' WHERE username = '".$_SESSION['recieveruser']."'";
        $result2 = mysqli_query($con, $q2);
    }
}

我在我的网站上创建了类似simliar的系统。在我的likes表中,我有以下列:

  • Id的评论,这一直很受欢迎
  • 喜欢的用户的Id
  • 类似物的Id(用于移除)
当用户单击like时,我将新行插入到likes表中,其中包含两个已知值。like的ID已自动递增

为了显示喜欢的数量,我按评论id进行过滤,并按用户id进行分组(只是为了确定)。该数字是使用count获得的

select count(*) from likes where comment_id = 666 group by user_id;

即使允许用户多次插入,类似的内容也只算一次。但最好的办法是检查一下,当前用户是否已经喜欢并且不让他这么做。对于此任务,可以使用重复密钥更新时插入来备用数据库请求(select)。

您不应该使用上面发布的代码。首先,您的代码容易受到SQL注入的攻击,因此应该使用Prepared语句()。其次,$\u会话变量被去除润滑()

假设您只希望用户能够喜欢一篇文章一次。然后,您需要一个唯一标识帖子的
post id
,而不是
likecount
列。 将
post id
username
组合定义为数据库中的主键

现在,您的代码只需检查您是否在表
likes
中找到具有相应
post id
username

如果在表中找不到具有相应的
帖子id的
用户名
,则必须插入
用户名
帖子id

。与您一起学习。