我有带有类型(时间戳)和默认CURRENT_TIMESTAMP的字段,当我使用phpMyAdmin浏览记录时,日期是正确的,但是当我试图通过phpMyAdmin文件显示它时,它显示了不正确的日期。
MySQL 2017-07-05 10:28:12
PHP 2017-06-23 09:51:31
使用以下查询
SELECT u.date FROM table uMySQL服务器的全局时区是(系统),我没有更改
PHP代码
<?php
include("../config.php");
$sql = mysql_query("sql query");
var_dump(mysql_fetch_array($sql));
?>有支持吗?
溶液
如果您面临这个问题,您必须执行以下操作:
使用PDO或mysqli_*函数代替mysql,这将解决问题,而无需在MySQL服务器或MySQL文件中设置时区。
发布于 2017-07-05 19:30:21
一定还有其他的问题(更多的代码‘图片’,也许?或者其他的配置/设置?),因为我无法复制。
这是我的样本数据:

下面是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());...and输出:(注意,我在上面的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);https://stackoverflow.com/questions/44932919
复制相似问题