Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 大型MySQL更新查询_Php_Mysql - Fatal编程技术网

Php 大型MySQL更新查询

Php 大型MySQL更新查询,php,mysql,Php,Mysql,从这个帖子中得到答案后,如果有读者可以参考它,我将节省大量的重新输入: 我发现我需要更新(在mysql数据库中)一个时区代码,根据user_timezone列中已经存在的内容(例如10+、1-)到olsen代码(例如“Europe/London”,等等)。最简单的方法是什么 任何想法都将不胜感激。您可以使用该类课程,但您得到的不是小时偏移量,而是分钟偏移量(IIRC)。不幸的是,您无法从UTC偏移量知道用户所在的区域。如果您查看一下,您会注意到许多区域共享相同的时间偏移,例如欧洲/萨拉热窝和欧洲

从这个帖子中得到答案后,如果有读者可以参考它,我将节省大量的重新输入: 我发现我需要更新(在mysql数据库中)一个时区代码,根据user_timezone列中已经存在的内容(例如10+、1-)到olsen代码(例如“Europe/London”,等等)。最简单的方法是什么


任何想法都将不胜感激。

您可以使用该类课程,但您得到的不是小时偏移量,而是分钟偏移量(IIRC)。

不幸的是,您无法从UTC偏移量知道用户所在的区域。如果您查看一下,您会注意到许多区域共享相同的时间偏移,例如欧洲/萨拉热窝和欧洲/布鲁塞尔

在mysql中重新映射值的方式如下所示:

UPDATE `sometable`
SET `somecolumn` = IFNULL(ELT(FIELD(`somecolumn`,
    'oldval1', 'oldval2', 'oldval3'),
    'newval1', 'newval2', 'newval3'),
    `somecolumn`
);

这会将“oldval1”的出现更改为“newval1”等,而不考虑“oldval”列表中未出现的任何内容。

考虑到时区偏移(例如UTC+2)可能对应于奥尔森数据库中的许多条目(例如欧洲/索菲亚、欧洲/里加、非洲/开罗等)您必须事先选择奥尔森代码对应的偏移量。
创建一个描述这些通信的表格,然后用它来构建您的更新语句。

您好,我不太明白您的意思,对不起,我还在学习。你能把你的意思再详细一点吗。我的想法是,我需要执行sql查询来更新数据库,但在此之前,我想我可能必须首先提取数据,以便在更新查询期间对其进行比较。了解您已经拥有的数据以及希望从中获得的数据会很好DHi在那里,好的。你有没有读到这是基于现有数据库的?创建数据库的脚本使用偏移代码以某种方式为用户分配时区。不过我在剧本里找不到。那么你对他们是如何做到这一点有什么想法?谢天谢地,我猜他们只是存储了用于计算当地时间的偏移量,并扔掉了一些细节——例如欧洲/伦敦代码,因为他们认为它没有用。如果数据没有被存储,那么不幸的是,它已经永远消失了。我的建议是在下次登录时要求用户再次指定他们的时区,并保存olson。如果你解释这将帮助你提高他们的体验或网站的质量,那么我相信这将是一个小小的不便(而且只是一次性的!)好吧,我同意。谢谢你的建议:)谢谢你的建议。我会保留它以备将来参考。干杯好的,这似乎是答案。谢谢:)