2011-06-17 26 views
0

设置在表字段当前日期和时间,如何使用我有表叫用户提供以下领域的Zend

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库马尔马诺哈兰

回答

1

我不确定是什么原因导致你的问题,但我发现使用NOW()更容易。此外,您应该确保变量$id在更新的where条件中被引用。

public function updateLastLoginDetails($id){ 
    $data = array('is_online' => 1, 'last_login' => new Zend_Db_Expr('NOW()')); 
    $this->_db->update('users', $data, array('id = ?' => $id)); 
} 
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场代替DATETIMElast_login和有MySQL的自动的更新。

+0

@詹姆斯Ç对不起,误我删除它,当我编辑的代码 – mymotherland 2011-06-17 11:16:56

+0

那你最终会被存储在`last_login`场? – 2011-06-17 11:18:10

0

你好我是否正确理解年份月份和日期正确插入,但不是小时分钟和秒?如果是这种情况,请您提供一个用户表的描述。只需在phpMyAdmin中执行“DESCRIBE users”即可。

如果是这种情况,可能是该字段的类型是DATE而不是DATETIME。