我指的是这个question
如果隐藏字段用于在插入记录时将时间存储在数据库中,访问者打开页面的时间是:下午 3:00,但他在同一页面上插入记录而不刷新并在下午 3:10 插入,那么结果似乎是 3 :00pm 因为页面加载时间早于该时间似乎已保存。那么我们如何在隐藏字段中保持运行时间!
有关表结构和 php 语句的更多信息:
表名:“区域” 列:ID、名称、区域名称、位置、添加时间、更新时间、删除
使用 php mysql。 隐藏的文本字段包含:
<input name="TIME" id="TIME" type="hidden" value="<?php date_default_timezone_set("".$row_CompanyDetails['TimeZone']."");echo "".date("Y-m-d G:i:s");?>">
现在假设用户在 2016-02-14 03:34:59 打开页面 所以隐藏字段的值是:2016-02-14 03:34:59
假设用户添加记录几秒钟后记录显示:2016-02-14 03:34:59,它必须显示 2016-02-14 03:35:10 或 11 或 12+ ... .
所以我需要准确的值。这对我来说很重要。
最佳答案
您的应用程序服务器不应依赖从隐藏输入发布的时间戳。
相反,它应该自己查询提交的时间。这既可以在应用程序服务器上完成,也可以在数据库插入/更新语句本身中完成。
使用 MySql documentation 中的信息,这里是如何使表 Areas 将字段 TimeAdded 和 TimeUpdated 保留为正确的时间戳本身(需要 MySql 版本 >= 5.6 ):
ALTER TABLE Areas
MODIFY TimeAdded DATETIME DEFAULT CURRENT_TIMESTAMP,
MODIFY TimeUpdated DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
如果您的 MySql 版本不支持上述语句,则采用此替代方法:创建将给出相同结果的触发器:
CREATE TRIGGER insAreas BEFORE INSERT ON Areas FOR EACH ROW
SET NEW.TimeAdded = CURRENT_TIMESTAMP;
CREATE TRIGGER updAreas BEFORE UPDATE ON Areas FOR EACH ROW
SET NEW.TimeUpdated = CURRENT_TIMESTAMP;
这样你就不必更新任何日期,MySql 会为你做这件事:
- 无需让 PHP 在 SQL 语句中传递这些日期。
- 无需将日期发送到浏览器中的隐藏输入
- 无需更正时间或时区。 MySql 是唯一使用服务器上的时间更新这些时间的。
关于php - 隐藏文本字段时间运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35391932/