我正在尝试使用codeigniter对一些MySQL数据进行简单的SELECT
。
//setup query
$this->db->select('personId, birthday')
->from('person')
->where('personId', $personId)
->limit(1);
//execute query
$query = $this->db->get();
//fetch result
$result = $query->row_array();
//found person
if(!empty($result)){
echo $result['birthday'];
}
}
}
birthday
字段在 mySQL 中作为DATE
类型。 数据库中的值和在phpMyAdmin中看到的值是'1980-05-21',但上面代码中回显的值只是'1980',只是年份。
我尝试将 mysql 类型切换到 DATETIME
但这没有任何作用。
我的猜测是它与Codeigniter有关,甚至可能与结果中的"-"字符有关。 这个问题快把我逼疯了! 有人有这个问题,知道如何解决吗?
我复制了你的代码,一切正常,可能是你的php.ini中的东西。设置 date.timezone 并检查区域设置(如果您有 intl 扩展名)。出于测试目的,请在回显$result后尝试die() ...也许它之后正在发生一些事情。我用CodeIgniter 2.1.3版本测试你的代码。
这不是对您的问题的直接回答,因为我不确定您对date
的问题,但似乎您可以选择更改字段,因为您已经更改了一次(如您的问题中所述)因此,在我的 opnion 中,使用 timestamp
比date/datetime
更好,这里有一个很好的答案, 所以,我认为如果您将类型更改为 timestamp
它可能会解决问题,并且很容易处理timestamp
上的任何类型的操作,此外,CodeIgniter
有一个日期助手可以轻松处理日期,但这只是一个选项,您也可以使用 PHP
的内置函数。
这只是一种意见,我更喜欢timestamp
而不是date/datetime
,至少,我不需要在yyyy-mm-dd
和dd-mm-yyyy
之间交换顺序,相反,我可以使用类似date('d-m-Y', $timestamp);
的东西来创建它 timestamp
.