如何每个ip /会话仅更新一次列?

时间:2018-10-04 21:51:25

标签: php database sql-update hitcounter

我正在尝试创建一个hit counter,但是此hit counter会在每次加载页面时更新counter列。

$mread = $conn->prepare("UPDATE bn_publicacao SET counter = counter + 1 WHERE id = :id");
$mread->bindParam(':id', $id, PDO::PARAM_INT);
$mread->execute();

我希望它每个IP /会话仅更新一次counter。我该怎么办?

1 个答案:

答案 0 :(得分:1)

session_start();

可选: 检查会话是否开始。 这可能是用于设置会话配置的函数。

if(function_exists('session_status')){
   if(session_status() != PHP_SESSION_ACTIVE)die('no session');
}else{
  die('no session');
};

启动并配置会话后,可以使用$ _SESSION中的变量。

   if(empty($_SESSION['counter']))
    {
        $_SESSION['counter'] = 1;
        $mread = $conn->prepare("UPDATE bn_publicacao SET counter = counter + 1 WHERE id = :id");
        $mread->bindParam(':id', $id, PDO::PARAM_INT);
        $mread->execute();
    };

这样,只有在$ _SESSION ['counter']不存在时,它才会运行查询代码。

这仅是每个会话一次计数器的示例,而不是查询。