gpt4 book ai didi

php - 仅使用 php 显示指定持续时间的数据

转载 作者:行者123 更新时间:2023-11-29 10:08:03 25 4
gpt4 key购买 nike

我有一个页面显示存储在 mysql 数据库中的帖子。创建帖子时,用户可以选择他们希望帖子可见的时间,我正在尝试弄清楚如何仅在确定的持续时间内显示帖子。这是我的一些代码(希望能展示我正在尝试的逻辑)。

//Query database

$sql = <<<SQL
SELECT *
FROM `posts`
SQL;

if(!$result = $db_connection->query($sql)){
die('There was an error running the query [' . $db_connection->error . ']');
}

while($row = $result->fetch_assoc()){

//The date the post was made
$date_of_post = $row['date_of_post'];
//The duration of the post in days eg 7.
$duration = $row['duration'];
//Attempting to add duration to date
$newdate = strtotime($duration, $date_of_post);
//Only show posts that are still valid, eg date + duration is less than today's date
if($newdate > now()){
echo '<h2>Post Title</h2>';
echo '<p>Date of Posted:'.$date.'</p>';
}
}

最佳答案

您可以使用 where条款和 date_add函数直接在 SQL 查询中应用此过滤器。只需添加 duration天到date_of_post值,并将其与 NOW() 进行比较.

请注意,因为您正在存储您的 duration值作为 varchar 而不是 int,您需要 convert将持续时间值设置为 signed int .

这是一个示例,其中 date_add进行扩展以更清楚地了解正在发生的事情。

select
*
from
posts
where
date_add
(
date_of_post,
INTERVAL convert(duration, SIGNED INT) DAY
) > NOW()

顺便说一句,您应该始终尝试在查询中过滤数据,而不是在 PHP 脚本中过滤数据。不要只将整个表选择到脚本中 - 让 SQL 完成尽可能多的工作。 RDBMS 比 PHP 高效得多,并且您将节省大量开销(例如通过网络发送的数据量,以及需要使用多少 RAM 来存储 PHP 处理的结果等)。

关于php - 仅使用 php 显示指定持续时间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51525090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com