如何使用php mysqli将事件的实时插入数据库?

如何使用php mysqli将事件的实时插入数据库?,第1张

概述我正在尝试为检查记录更改添加日期时间.我在表中使用datetime数据类型.`date_added` datetime DEFAULT '0000-00-00 00:00:00', 我在查询中使用以下php内置函数for datetime列date('Y-m-d H:i:s'); 问题是这个功能日期(“Y-m-d H:i:s”);当我在服务器上同时检查时给我 @H_404_1@我正在尝试为检查记录更改添加日期时间.我在表中使用datetime数据类型.

@H_404_1@

`date_added` datetime DEFAulT '0000-00-00 00:00:00',
@H_404_1@我在查询中使用以下PHP内置函数for datetime列

@H_404_1@

date("Y-m-d H:i:s");
@H_404_1@问题是这个功能日期(“Y-m-d H:i:s”);当我在服务器上同时检查时给我两个不同的日期和时间.

@H_404_1@Localhost结果

@H_404_1@

 date("Y-m-d H:i:s"); == 2016-07-12 13:10:04
@H_404_1@服务器结果

@H_404_1@

 date("Y-m-d H:i:s"); == 2016-07-12 05:08:07
@H_404_1@所以当我在date_added列上使用TimeAgo函数时,它给了我错误的时间,我的意思是服务器时间.例如,我添加一个记录然后功能将返回我记录添加8小时前所以它完全错误.我想知道如何将事件的实时添加到我可以使用TimeAgo()函数显示的数据库中.

@H_404_1@有没有办法在不更改服务器时区的情况下做到这一点,因为如果我更改时区,那么它将只显示那些位于同一区域但会获得其他区域的人的正确时间?我认为他们将面临同样的问题.

@H_404_1@我想开发类似Facebook DateTime功能的东西.

@H_404_1@任何人都可以指导我如何实现这种功能?我想要感激.谢谢

最佳答案为什么不做,而不是摆弄时区

@H_404_1@

ALTER table `your_table`  CHANGE `date_added` `date_added`  TIMESTAMP NOT NulL DEFAulT CURRENT_TIMESTAMP
@H_404_1@This will change your column from a DATE column to a TIMESTAMP column,将所有日期转换为过程中各自的UTC时间戳.

@H_404_1@插入新行时,it will use the current timestamp as a value.时间戳始终为UTC,因此您不必更改MysqL服务器上的时区,也不必在插入新行时提供日期.

@H_404_1@如果您不能或不想更改列,您也可以选择时间戳

@H_404_1@

SELECT UNIX_TIMESTAMP('date_added') FROM your_table;
@H_404_1@对于你的TimeAgo,你可以做到

@H_404_1@

$Now = new DateTime;$dateAdded = new DateTime("@$yourTimestampFromDb");$dateAdded->setTimezone($Now->getTimezone());$timeSinceAdded = $dateAdded->diff($Now);
@H_404_1@当您向DateTime提供时间戳时,无论您设置的是哪个默认服务器时区,它都将始终使用UTC.因此,您必须将$dateAdded转换为默认时区(如上所示)或将$timeSinceAdded转换为UTC.

@H_404_1@要将dateTime更改为当前访问用户的时区,您要么

@H_404_1@>需要在您的数据库中包含此信息,例如因为您要求注册用户提供此信息
>或you determine it at runtime,usually by doing a GeoIP lookup on the visiting user’s IP or by sending the DateTime Offset from the user’s browser.

@H_404_1@在任何情况下,您只需将两个DateTimes更改为该时区. This is easily done via setTimezone().

@H_404_1@$timeSinceAdded将是DateInterval对象,which you can use like this

@H_404_1@

echo $timeSinceAdded->format('%a total days');
@H_404_1@有关更多详细信息,请参阅链接,例如可用的格式修饰符. 总结

以上是内存溢出为你收集整理的如何使用php mysqli将事件的实时插入数据库?全部内容,希望文章能够帮你解决如何使用php mysqli将事件的实时插入数据库?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1166448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存