Php中的Like系统
嘿,我想用php创建一个类似的系统,但我面临一些问题 我怎样才能创建一个每个用户只允许一个Like的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
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
。与您一起学习。