为了账号安全,请及时绑定邮箱和手机立即绑定

根据最受欢迎的计数器获取 ID

根据最受欢迎的计数器获取 ID

PHP
人到中年有点甜 2021-08-28 15:25:54
我正在构建最受欢迎的文章系统,我将 ID 发送到数据库并将 total_views 值增加 1,但我不知道如何检索最受欢迎的值。我试过按价值获取,但我是 sql 的新手,不知道要搜索什么。$servername = "";$username = "";$password = "";$dbname = "";$conn = mysqli_connect($servername, $username, $password, $dbname);if (!$conn) {    die("Connection failed: " . mysqli_connect_error());}$id = '44441';$sql = "SELECT id FROM top_pages WHERE id='$id'";$result = mysqli_query($conn, $sql);if (mysqli_num_rows($result) > 0) {   echo 'exist';   $update = "UPDATE top_pages SET total_views = total_views + 1 where id='$id'";   mysqli_query($conn, $update);} else {   echo 'not found';   $insert = "INSERT INTO top_pages (id,total_views) VALUES ('$id', '1')";   mysqli_query($conn, $insert);}mysqli_close($conn);我对代码的期望是根据过去 8 小时内的 total_views 提取前 10 个 ID,因此仅存储/更新过去 8 小时内的最高值。
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

添加日期列后,您可以获得过去 8 小时的数据,如下所示:


SELECT id FROM top_pages 

WHERE your_date_column_name > DATE_ADD(NOW(), INTERVAL -8 HOUR)

ORDER BY total_views DESC LIMIT 10

使用INTERVAL -8 HOUR中得到8小时前的数据


ORDER BY total_views DESC 获得最高观看次数记录


LIMIT 10 限制记录


查看完整回答
反对 回复 2021-08-28
?
米脂

TA贡献1836条经验 获得超3个赞

您当前表示数据的方式对您没有帮助,因为您没有任何关于何时total_views更新的信息。让我们假设一个top_pages条目是在 30 天前创建的,并且 total_views 为 3000。无法确定这 3000 次中有多少是在过去 8 小时内完成的。


相反,拥有这样的表格要好得多:


访问(id,page_id,visit_timestamp)


然后这样做


select page_id, count(*)

from visits

group by page_id

where visit_timestamp >= DATE_SUB(NOW(), INTERVAL 8 HOUR)

order by count(*) desc

limit 0, 10;


查看完整回答
反对 回复 2021-08-28
  • 2 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信