【问题标题】:mysql date is different when print from php从php打印时mysql日期不同
【发布时间】:2017-07-05 17:50:43
【问题描述】:

我有类型(时间戳)和默认 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));
?>

有什么支持吗?

解决方案

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

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

【问题讨论】:

  • 我怀疑 PhpMyAdmin 正在执行转换,因为 PHP 不会自己执行此操作。
  • 你错过了一些东西。你能发布你的php代码吗?
  • @Prabhat G 请检查代码
  • @PrabhatG 循环

标签: php mysql timezone


【解决方案1】:

肯定还有其他问题(可能更多的是代码“图片”?...或其他一些配置/设置?),因为我无法重现。

这是我的示例数据:

这是date 列的结构:

我使用的 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);

【讨论】:

  • 它工作正常,如果我想使用 mysql 函数而不是 PDO 有什么问题!
  • mysql_* 函数已被弃用,不应再使用。但是,可以使用 mysqli_* 代替 PDO。使用 mysqli 应该得到与我的输出相同的结果。
  • 非常感谢,现在知道了 +1
  • 那么你做了什么不同的,对于其他可能跨越这个答案的人?
  • 我修改主题并添加解决方案
猜你喜欢
  • 2021-09-18
  • 2012-03-11
  • 2019-10-28
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2012-08-13
  • 2013-02-08
  • 2012-08-07
相关资源
最近更新 更多