如何每 ip/session 仅更新一次列?
How to UPDATE a column only once per ip/session?
我正在尝试创建 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/session 只更新一次 counter
。我该怎么做?
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'] 不存在时,它才会 运行 查询代码。
这只是每个会话一次的计数器示例,而不是查询。
我正在尝试创建 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/session 只更新一次 counter
。我该怎么做?
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'] 不存在时,它才会 运行 查询代码。
这只是每个会话一次的计数器示例,而不是查询。