重要な編集: プログラミング エラーはありませんでした
それは私の間違いであり、問題を引き起こしました。以下の問題を読んでください。
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
。
とにかく、コメントで問題を見つけてくれたPrixに感謝します。この質問に対して私が今できる最善のことは、近いうちに投票することだと思います。