【问题标题】:Unable to Set MySQL Timezone using PDO in PHP无法在 PHP 中使用 PDO 设置 MySQL 时区
【发布时间】:2015-07-19 21:29:03
【问题描述】:

重复标记的链接地址部分“如何配置时区?”,我 遵循相同但它给了我一个错误,如下所述

我在我的 php 页面上看到以下错误

Cannot execute queries while other unbuffered queries are active.  Consider using PDOStatement::fetchAll().  Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

我已经解决了多个相同性质的问题,但在我的具体案例中无法理解问题。

这是我要运行的查询

SELECT  count(*) as total FROM  my_company en
                ORDER BY  cmpid ASC

注意:这是第一个查询,执行之前没有查询。我虽然可能会错过$stmt->closeCursor();,但事实并非如此。

但是我确实对设置数据库时区进行了一些更改 我的代码适用于以下代码

$pdo = new PDO ( "mysql:host=$hostname;dbname=$dbname", $username, $password );

我想实现以下事情(设置mysql的时区)

mysql_query("SET time_zone = 'UTC';SET NAMES utf8 ;");

所以对于PDO,我进行了以下更改,现在我的代码不起作用。

$pdo= new PDO ( "mysql:host=$hostname;dbname=$dbname", 
                                                $username, $password, 
                                                array(PDO::MYSQL_ATTR_INIT_COMMAND =>"SET NAMES utf8;SET time_zone = 'UTC'") );

这里是代码如果这可能有帮助

try {

    $statement = $pdo->prepare ( $sql );
    $statement->execute(); //exception on this line
    $result =  $statement->fetch ( PDO::FETCH_ASSOC );
    $statement->closeCursor();
    unset($statement);
} catch ( PDOException $e ) {
    sqlDie("Error: ", $e->getMessage(), $e->getCode(), array('exception' => $e));
}

我的系统配置

Windows 7
PHP 5.4.12
MySQL 5.6.12
Apache 2.4.4

【问题讨论】:

标签: php mysql pdo


【解决方案1】:

这是一种动态设置 MySQL 时区的方法,取决于 PHP 时区

date_default_timezone_set('UTC');
$time_offset = date('P',time()); // +00:00
$pdo->query("SET time_zone='$time_offset';");

【讨论】:

    猜你喜欢
    • 2016-03-29
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2021-08-21
    • 2015-12-26
    • 1970-01-01
    相关资源
    最近更新 更多