php - 隐藏文本字段时间运行

标签 php html mysql textfield hidden-field

我指的是这个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 将字段 TimeAddedTimeUpdated 保留为正确的时间戳本身(需要 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/

相关文章:

python - Django 根据客户端 python 返回 json 和 html

MySql 数据库 - 可视化导出

javascript - 我应该使用 <td> 还是 <div> 和嵌套的 <div> 来包含缩略图

html - 元素水平堆叠在垂直不堆叠的地方

mysql - 如何检查 mysql dbi Perl 中的重复键?

mysql - 不明白为什么MYSQL查询这么慢

PHP正则表达式来破译英文和中文字符

php - 要插入的PHP脚本只是返回<br/>而没有将数据插入数据库中

PHP:哪个更快 - array_sum 还是 foreach?

php - CodeIgniter 500 内部服务器错误