我正在尝试使用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有关,甚至可能与结果中的' - '字符有关。这个问题让我抓狂!有谁有这个问题,并知道如何解决它?
答案 0 :(得分:0)
我复制你的代码,一切正常,可能是你的php.ini中的东西。如果您有intl扩展名,请设置date.timezone并检查区域设置。 出于测试目的,在echo $ result之后尝试die()...也许是之后发生的事情。 我用CodeIgniter 2.1.3版本测试你的代码。
答案 1 :(得分:0)
这不是您问题的直接答案,因为我不确定您对date
的问题,但似乎您可以选择更改字段,因为您已经更改了一次(如您所述)问题)所以,在我的观察中,使用timestamp
比date/datetime
更好,这里有一个nice answer,所以,我想如果你将类型更改为timestamp
它可以解决问题并且很容易处理timestamp
上的任何操作,CodeIgniter
有一个Date Helper可以轻松处理它的日期,但它只是一个选项,你可以使用它PHP
的内置函数。
这只是一种意见,我更喜欢timestamp
而不是date/datetime
,至少,我不需要在yyyy-mm-dd
和dd-mm-yyyy
之间交换订单,而是我可以使用date('d-m-Y', $timestamp);
中的timestamp
等内容创建它。