如何使用zend在表字段中设置当前日期和时间

时间:2011-06-17 11:09:25

标签: php zend-framework

我正在使用带有以下字段的用户表

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

3 个答案:

答案 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。