如何在 PHP 中使用简单的点赞页面多次点赞?

Posted

技术标签:

【中文标题】如何在 PHP 中使用简单的点赞页面多次点赞?【英文标题】:How to like multiple times with simple like page in PHP? 【发布时间】:2019-06-06 04:20:56 【问题描述】:

我为我正在进行的项目制作了一个简单的赞页面。我有一个带有演讲者的页面,每个演讲者都有一个喜欢的按钮,一旦单击它就会被定向到我的 like_code php 页面,其中包含演讲者 ID,它成功地用 1 个赞更新了数据库。这行得通。

现在我的问题是我只能点赞一次,我有一个变量“1”,每次按下按钮时,我都会使用 sql UPDATE 将其添加到现有的点赞计数器中。但由于某种原因,我只能为每个发言者点赞一次,如果我在我的数据库中手动添加更多点赞数(比如 7 个),当我再次单击点赞按钮时,它会被覆盖并降回 1。

到目前为止我还没有在网上发现任何类似的问题,并且每个在线喜欢的系统都与我的非常不同。我也不使用用户 ID,并且扬声器 ID + likecounter 在同一张表中。这是我从数据库中用于类似代码的仅有的两个值。

<?php 

require_once('website/script/database.php');

if(isset($_GET['idsprekers']))
    //Get idsprekers
    $id = $_GET['idsprekers'];

    $a = "1";
    $liked = $row['likecounter'];
    $liked = $liked + $a;

    //Prepare query
    $sql = "UPDATE sprekers SET likecounter=$liked WHERE idsprekers=?";

    //$stmt = statement
    $stmt = $mysqli->prepare($sql);

    //Parameter
    $stmt->bind_param("i", $id);

    //Execute query
    $stmt->execute();




header("location:overzicht_spreker.php");

?>

在我的演讲者页面上点赞演讲者的链接

print('<div class="col-2"><a href="like_code.php?idsprekers=' . $tempId 
.'" class="btn-like"><i class="far fa-heart"></i></a></div>');

我的预期结果是,当我单击赞按钮时,它每次都会更新数据库,当我单击它一次时,它会在数据库中显示 1 个赞,而当我稍后再次单击它时,它会显示 2 个赞。现在它只显示 1 并且不想让步,除非我手动输入。

【问题讨论】:

您可以简单地在 MySQL 中递增,而不是将变量获取到 PHP、递增和存储。 UPDATE sprekers SET likecounter=likecounter + 1。如果多人同时喜欢,这也可以防止冲突 maximst96 你检查过答案了吗? 【参考方案1】:

在您的查询中使用SET field = field + 1

$sql = "UPDATE sprekers SET likecounter=likecounter+1 WHERE idsprekers=?";

现在修改后的代码是这样的:

<?php 

require_once('website/script/database.php');

if(isset($_GET['idsprekers']) && $_GET['idsprekers'] > 0 ) //check id is not coming as 0
    //Get idsprekers
    $id = $_GET['idsprekers'];

    //Prepare query
    $sql = "UPDATE sprekers SET likecounter=likecounter+1 WHERE idsprekers=?";

    //$stmt = statement
    $stmt = $mysqli->prepare($sql);

    //Parameter
    $stmt->bind_param("i", $id);

    //Execute query
    $stmt->execute();


else
    die('speaker id required'); //if id didn't came, throw an error


// apply exit or die along with header(), otherwise code execution won't stop and will create a big security loophole.
header("location:overzicht_spreker.php");exit; 

?>

注意:- 请特别注意代码部分的 cmets。

【讨论】:

以上是关于如何在 PHP 中使用简单的点赞页面多次点赞?的主要内容,如果未能解决你的问题,请参考以下文章

一个简单的SignalR例子

Jquery一个简单的点赞效果,实现点赞数+1

Jquery一个简单的点赞效果,实现点赞数+1

Jquery一个简单的点赞效果,实现点赞数+1

如何实现异步的点赞和评论的

新浪微博「点赞功能」数据库如何设计的?