重要编辑:没有编程错误
那是我的一个错误,导致了问题。请阅读以下问题:
login()
在看到用户使用以下功能登录后,我想更新用户的上次登录时间戳user_model.php
。
public function login($username, $password)
{
$this->db->select('id, username, email, type, language, lastlogintimestamp');
$this->db->from('user');
$this->db->where('username', $username);
$this->db->where('password', $password);
$this->db->limit(1);
$result = $this->db->get();
if ($result->num_rows() > 0)
{
$this_user = $result->first_row();
$this->db->query(
'UPDATE `user` SET `lastlogintimestamp` = ? WHERE `id` = ? LIMIT 1',
array(time(), $this_user->id)
);
return $this_user;
}
return FALSE;
}
用户成功登录后,$result->first_row()
存储到$this_user
变量中,然后我更新lastlogintimestamp
.
所以很明显应该返回旧的值。lastlogintimestamp
问题是我很奇怪地看到返回了新值!!!
很简单:我看到结果的地方是因为一个非常独立的查询,比如SELECT * FROM user
.
在那里,我看到了一个拥有自己lastlogintimestamp
s 的用户列表。
很明显,我看到了更新lastlogintimestamp
的 s。
无论如何,我应该感谢Prix通过评论帮助我找到问题。我认为我现在对这个问题能做的最好的事情就是投票支持它。