我正在尝试做一个简单的SELECT的一些mysql数据,使用codeigniter。
//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类型。DB中和phpMyAdmin中看到的值是'1980-05-21',但上面代码中回显的值只是'1980',就是年份。
我尝试将mysql类型切换为DATETIME,但没有任何效果。
我猜测这与Codeigniter有关,甚至可能与结果中的'-‘字符有关。这个问题快把我逼疯了!有没有人遇到过这个问题,并且知道如何解决?
发布于 2013-11-08 05:27:41
我复制了你的代码,所有的工作都很好,可能是你的php.ini中的一些东西。设置date.timezone并检查区域设置,如果您有intl扩展名。出于测试目的,在echo $result之后尝试die() ...也许是它之后发生的事情。我使用CodeIgniter 2.1.3版本测试您的代码。
发布于 2013-11-08 05:35:02
这不是对你问题的直接回答,因为我不确定你的date的问题,但似乎你有一个选项来改变字段,因为你已经改变了它一次(正如你的问题中提到的)所以,在我的观点中,使用timestamp比使用date/datetime更好,这里有一个关于它的nice answer,所以,我认为如果你把类型改为timestamp,它可能会解决问题,并且很容易处理timestamp上的任何类型的操作,而且,CodeIgniter有一个Date Helper可以轻松地处理它的日期,但这只是一个选项。您也可以使用PHP的内置函数。
这只是一种观点,我更喜欢timestamp而不是date/datetime,至少,我不需要在yyyy-mm-dd和dd-mm-yyyy之间交换顺序,相反,我可以使用timestamp中的date('d-m-Y', $timestamp);创建它。
https://stackoverflow.com/questions/19846633
复制相似问题