我有字段类型(时间戳)和默认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文件中设置时区。
答案 0 :(得分: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);