【发布时间】:2014-08-25 00:01:41
【问题描述】:
我正在尝试在连接到我的数据库后立即将时区更改为“欧洲/伦敦”。这是我的原始代码:
$pdo = new PDO('mysql:host=localhost;dbname=exampletable', 'exampleuser', 'examplepassw', array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
我将其更改为以下代码,但显然这不是更改时区的正确方法,因为我收到错误。
$pdo = new PDO('mysql:host=localhost;dbname=exampletable', 'exampleuser', 'examplepassw', array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 'SET time_zone = 'Europe/London''));
如何更改从 PDO 开始的时区?
【问题讨论】:
-
我不知道是否可以将其注入PDO,但
<?php date_default_timezone_set('Europe/London');不够或不够? -
查看bugs.php.net/bug.php?id=48859 可能会为您提供一些答案。正在使用
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8;SET time_zone = 'Europe/Prague'"),所以试试看。 -
你得到什么错误?我看到代码有几个潜在的问题。 (a) 值必须是一个数组,(b) 单引号字符串中的单引号字符串。 (c) SET time_zone 可能是每个语句,并且 (d) 时区名称可能对您的 MySQL 服务器不可用。试试
array (\PDO::MYSQL_ATTR_INIT_COMMAND => array ('SET NAMES utf8', 'SET GLOBAL time_zone = "+01:00"'))。 -
'SET NAMES utf8', "SET time_zone = 'Europe/London'"));现在,我们等待... -
所以现在我有了这段代码,我的网页将不再加载:
$pdo = new PDO('mysql:host=localhost;dbname=exampletable', 'exampleuser', 'examplepassw', array(\PDO::MYSQL_ATTR_INIT_COMMAND => array ('SET NAMES utf8', "SET time_zone = 'Europe/London'")));
标签: php mysql sql pdo timezone