2

我需要在数据库中保留一个字段并以某种方式更新它,然后稍后我需要检查该时间是否超过 30 分钟,如果不是,距离 30 分钟还有多长时间?

我将使用 PHP+MySql 来做这件事,谁能告诉我最简单的方法?

谢谢!!

4

3 回答 3

0

我可以将所有插入和更新 MySql 调用包装在一个函数中,如下所示:

function MySqlQuery($query, $res){
    $result = mysql_query($qs, $res);
    if($result === false){
        mysql_query("QUERY STRING TO UPDATE FIELD IN DATABASE WITH NEW TIME", $res);
    }
    return $result;
}

用实际的更新查询替换“用新时间更新数据库中的字段的查询字符串”,你应该很高兴。

于 2009-07-08T17:15:17.497 回答
0

我所做的是,在最新记录上加上时间戳。使用 MySQL Query 提取最新记录,然后使用 mysql fetch 数组函数获取最后一条记录的时间。使用仅随时间更新的数据库也是如此。

您将能够使用将当前时间与记录时间进行比较的函数来操纵该时间。从那里您可以显示自上次发布以来的时间,如果超过 30 分钟,您可以让它回显一条消息。

$currenttime = /* PHP Time Formatting you wish to use. */

$query = mysql_query("SELECT time FROM database");
$row = mysql_fetch_array($query);

echo "Last Record Posted @" . $row['time'];

$timesince = $currenttime - $row['time'];
echo "Time Since Last Post:" . $time - $row['time'];

if($timesince >= "30"){
echo "Over 30 Minutes!";
}

如果您有任何问题,请告诉我。上面的代码应该让您了解它是如何工作的,但这是一个粗略的示例。

祝你好运!!

编辑:::

抱歉,我看错了问题,您仍然需要将时间输入数据库。您仍然可以使用上面的代码来拉时间,看看是否大于 30 分钟。

有关时间戳,请查看PHP 时间手册。您需要为 MySQL 输入和我上面发布的代码选择相同的时间格式。

于 2009-07-08T17:18:25.340 回答
0

假设您想知道表中的最后一次更新/插入发生在多长时间前。
您可以使用带有 on update 子句的时间戳字段设置表

CREATE TABLE foo (
  id int auto_increment,
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  primary key(id),
  key(ts)
)

然后查询ts中值最大的记录

SELECT
  TIMEDIFF(Now()-Interval 30 Minute, ts)
FROM 
  foo
ORDER BY
  ts DESC
LIMIT
  1

编辑:如果您想获取在过去 12 小时内插入/修改的所有记录,这也有效。

SELECT
  TIMEDIFF(Now()-Interval 30 Minute, ts)
FROM 
  foo
WHERE
  ts > Now()-Interval 12 hour
ORDER BY
  ts DESC

编辑2:您也有可能对http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html感兴趣:

SHOW TABLE STATUS 返回以下字段:
...
Update_time
上次更新数据文件的时间。对于某些存储引擎,此值为 NULL。例如,InnoDB 在其表空间中存储了多个表,并且数据文件时间戳不适用。对于 MyISAM,使用数据文件时间戳;但是,在 Windows 上,时间戳不会被更新更新,因此该值不准确。

于 2009-07-08T17:24:50.397 回答