【发布时间】:2017-03-23 17:48:20
【问题描述】:
我有以下问题: 我正在使用几年前为我制作的朋友提供的 php/mysql 脚本。通常情况下,我会在我所在国家/地区的服务器上托管该脚本,因此服务器时间将是我的当地时间(欧洲/柏林),所以根本没有问题。
但现在我在美国(纽约)托管了我的域,并且我的脚本将错误的时间添加到数据库中(当前为 -5 小时)。
所以不是添加 2017-03-23 19:00 而是添加 2017-03-23 14:00
所以我的解决方案是更改 mySQL 查询并减去 5 小时,它会适合......现在......但是在夏季/冬季变化时,我将不得不再次调整脚本 :(
所以我的问题是: 如何更改我的 NOW() 以适应我的时区(欧洲/柏林)?
这是我的一个问题,所以你可以帮我编辑它,因为我是一个完全的菜鸟,需要我们的帮助,非常感谢!
$insQuery = "INSERT INTO tbl_anmeldungen (fld_raid_id,fld_user_id,fld_anmelddate,fld_anmelde_notiz,fld_random) VALUES ('$raidID','$userID',NOW(),'$notiz','$myrand')";
所有需要更改/编辑的是 NOW() 部分,以将其修复到我的时区。如果这不可能,我需要如何更改 NOW() 部分以减少 5 小时?
非常感谢您的帮助!谢谢!
【问题讨论】:
-
警告:尽可能使用prepared statements来避免在查询中注入任意数据并创建SQL injection bugs。在
mysqli和PDO 中执行这些操作非常简单,其中任何用户提供的数据都使用?或:name指示符指定,稍后使用bind_param或execute填充,具体取决于您是哪个使用。 -
嗨,tadman,也许它不安全或不是最新的,我知道,代码已经写了 12 年,而且不是我编写的(我什至不能编写代码)。所以请尝试帮助我解决我的问题,因为我什至没有足够的技能来修复或使其更安全,抱歉:(
-
使用
CONVERT_TZ()函数。 -
顺便说一句:在有人可能会回答之前:“为什么不将服务器时间更改为本地时区”?我不能,因为它是共享网络空间,而不是 VPN 或专用服务器 :(
-
@Barmar:我想这是个好主意。但是由于我是一个完全的菜鸟并且没有制作该脚本,您能否使用我上面的代码向我展示使用 CONVERT_TZ() 的效果?那么: VALUES ('$raidID','$userID',NOW(),'$notiz','$myrand') 会怎样?谢谢!