从php打印时,mysql日期不同

时间:2017-07-05 17:50:44

标签: php mysql timezone

我有字段类型(时间戳)和默认CURRENT_TIMESTAMP,当我用phpMyAdmin浏览记录时日期是正确的但是当我试图通过PHP文件显示它时显示错误的日期

日期在MySQL 2017-07-05 10:28:12

日期在PHP 2017-06-23 09:51:31

使用以下查询

SELECT u.date FROM table u

MySQL服务器的全局时区是(SYSTEM),我没有改变

PHP代码

<?php
include("../config.php");
$sql = mysql_query("sql query");
var_dump(mysql_fetch_array($sql));
?>

任何支持?

如果您遇到此问题,则必须执行以下操作:

而不是mysql使用PDO或mysqli_ *函数,这将解决问题,而无需在MySQL服务器或PHP文件中设置时区。

1 个答案:

答案 0 :(得分:1)

还有一些其他问题(更多的是代码'图片',或许?或其他一些配置/设置?),因为我无法重现。

这是我的示例数据:

enter image description here

以下是date列的结构:

enter image description here

我使用的PHP代码:

$dsn = 'mysql:host=localhost;dbname=test';

try {
    $conn = new PDO($dsn, 'root', 'xxxxx');
} catch (PDOException $e) {
    echo 'Error: ' . $e->getMessage();
    die();
}

$stmt = $conn->prepare("SELECT t.date FROM tryme t");
$stmt->execute();
var_dump($stmt->fetchAll());

...和输出:( 请注意我在上面的PHP代码中使用了PDO处理,如果使用了mysqli,输出会相似

array(5) {
  [0]=>
  array(2) {
    ["date"]=>
    string(19) "2017-07-05 14:45:51"
    [0]=>
    string(19) "2017-07-05 14:45:51"
  }
  [1]=>
  array(2) {
    ["date"]=>
    string(19) "2017-07-05 14:45:51"
    [0]=>
    string(19) "2017-07-05 14:45:51"
  }
  [2]=>
  array(2) {
    ["date"]=>
    string(19) "2017-07-05 14:45:51"
    [0]=>
    string(19) "2017-07-05 14:45:51"
  }
  [3]=>
  array(2) {
    ["date"]=>
    string(19) "2017-07-05 14:45:51"
    [0]=>
    string(19) "2017-07-05 14:45:51"
  }
  [4]=>
  array(2) {
    ["date"]=>
    string(19) "2017-07-05 14:45:51"
    [0]=>
    string(19) "2017-07-05 14:45:51"
  }
}

<强>更新

示例mysqli代码,而不是PDO,来实现相同的输出:

$db = new mysqli('localhost', 'root', 'xxxxx', 'test');
$result = $db->query("SELECT t.date FROM tryme t");

$rows = [];

while ( $row = $result->fetch_array() ) {
    $rows[] = $row;
}

var_dump($rows);