我正在尝试在连接到我的数据库后立即将时区更改为“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开始更改时区?
答案 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));
希望对您有帮助。