使用"设置time_zone = ..."连接数据库后更改时区

时间:2014-07-03 18:25:48

标签: php mysql sql pdo timezone

我正在尝试在连接到我的数据库后立即将时区更改为“Europe / London”。这是我的原始代码:

$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开始更改时区?

3 个答案:

答案 0 :(得分:8)

在其他人的帮助下(见评论),我设法找到了完成工作的代码:

$pdo = new PDO('mysql:host=localhost;dbname=exampletable', 
               'exampleuser', 
               'examplepassw', 
               [PDO::MYSQL_ATTR_INIT_COMMAND =>"SET NAMES utf8;SET time_zone = 'Europe/London'"]);

答案 1 :(得分:1)

我是这样做的(在Amazon RDS上 - 因为没有'系统'方式来改变它):

try {
    $timezone = "America/Chicago";;

    $objDb = new PDO('mysql:host=localhost;dbname=my_database', 'username', 'password');
    $objDb->exec("SET time_zone = '{$timezone}'");

} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

答案 2 :(得分:0)

这是对我有用的唯一方法:

$db = new PDO('mysql:host='.$servername.';dbname='.$dbname,$username,$password,
array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8, time_zone = "-6:00";', 
PDO::ATTR_EMULATE_PREPARES => false, 
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

希望对您有帮助。