我需要在数据库中保留一个字段并以某种方式用时间更新它,然后我需要检查那个时间是否超过30分钟之前,如果不是,那么分钟如何30?
我将用PHP + MySql做这个可以有人告诉我最简单的方法吗?
谢谢!
答案 0 :(得分: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;
}
使用实际更新查询将“QUERY STRING更新为新数据库中的字段更新”,您应该很高兴。
答案 1 :(得分: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 Time Manual。您需要为MySQL输入和我上面发布的代码选择相同的时间格式。
答案 2 :(得分: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
edit2:您可能对http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html感兴趣:
SHOW TABLE STATUS返回以下字段:
...
UPDATE_TIME
上次更新数据文件时。对于某些存储引擎,此值为NULL。例如,InnoDB在其表空间中存储多个表,并且数据文件时间戳不适用。对于MyISAM,使用数据文件时间戳;但是,在Windows上,更新不会更新时间戳,因此值不准确。