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

我正在构建最受欢迎的文章系统,我将 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 小时内的最高值。


人到中年有点甜
浏览 127回答 2
2回答

ibeautiful

添加日期列后,您可以获得过去 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 限制记录

米脂

您当前表示数据的方式对您没有帮助,因为您没有任何关于何时total_views更新的信息。让我们假设一个top_pages条目是在 30 天前创建的,并且 total_views 为 3000。无法确定这 3000 次中有多少是在过去 8 小时内完成的。相反,拥有这样的表格要好得多:访问(id,page_id,visit_timestamp)然后这样做select page_id, count(*)from visitsgroup by page_idwhere visit_timestamp >= DATE_SUB(NOW(), INTERVAL 8 HOUR)order by count(*) desclimit 0, 10;
打开App,查看更多内容
随时随地看视频慕课网APP