我正在使用带有以下字段的用户表
is_login(tinyint(1))
和last_login(datetime)
。
以下是用户在线时使用Zend进行更新的代码,
public function updateLastLoginDetails($id){
$currentDateTime = date('Y-m-d H:i:s');
$data = array('is_online' => 1,'last_login'=>$currentDateTime);
$this->_db->update( 'users', $data,'id = '.$id);
}
这里我使用$currentDateTime = date('Y-m-d H:i:s');
来存储当前数据和时间。但随着时间的推移似乎并不好。
请建议我使用Zend存储当前数据和时间的最佳方法。
提前致谢,
Dinesh Kumar Manoharan
答案 0 :(得分:1)
我不确定是什么导致了你的问题,但我发现使用NOW()更容易。此外,您应确保在更新的where where条件中引用变量$id
。
public function updateLastLoginDetails($id){
$data = array('is_online' => 1, 'last_login' => new Zend_Db_Expr('NOW()'));
$this->_db->update('users', $data, array('id = ?' => $id));
}
答案 1 :(得分:0)
您似乎忘了在代码中的任何位置使用$data
!
public function updateLastLoginDetails($id){
$currentDateTime = date('Y-m-d H:i:s');
$data = array('is_online' => 1, 'last_login'=>$currentDateTime);
$this->_db->update('users', $data, 'id = '. (int)$id);
}
您可能需要考虑使用TIMESTAMP
字段代替DATETIME
last_login
,并让MySQL自动更新。
答案 2 :(得分:0)
我是否正确理解正确插入年月和日而不是小时分和秒?如果是这种情况,请提供用户表的描述。只需在phpMyAdmin中执行“DESCRIBE users”。
如果是这种情况,那么该字段可能是DATE类型而不是DATETIME。