我指的是question
如果使用隐藏字段用于在插入记录和数据时在db中存储时间该怎么办?访问者打开页面的时间是:下午3:00,但他在同一页面上插入记录而没有刷新&在下午3:10插入然后结果似乎是下午3:00导致页面加载的时间早些时候似乎是保存。那么我们如何在隐藏的领域保持运行时间!
有关表结构的更多信息,& php声明:
表名:“区域” 列:ID,名称,AreaName,Position,TimeAdded,TimeUpdated,Deleted
使用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+ ...
所以我需要确切的价值。这对我来说至关重要。
答案 0 :(得分:1)
您的应用程序服务器不应该依赖从隐藏输入发布的时间戳。
相反,它应该自己查询提交的时间。这可以在应用程序服务器上或在数据库插入/更新语句本身中完成。
使用MySql documentation中的信息,以下是如何使表格区域将字段 TimeAdded 和 TimeUpdated 保留到正确的时间戳本身(需要MySql版本&gt; = 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将为您执行此操作: