0

重要な編集: プログラミング エラーはありませんでした

それは私の間違いであり、問​​題を引き起こしました。以下の問題を読んでください。


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_userlastlogintimestamp

したがって、の古い値をlastlogintimestamp返す必要があることは明らかです。

問題は、非常に奇妙なことに、新しい値が返されることです!!!


非常に単純です。結果が表示されたのは、のような非常に別個のクエリが原因でしたSELECT * FROM user

そこには、独自lastlogintimestampの を持つユーザーのリストが表示されていました。

更新された s を見ていたことは明らかですlastlogintimestamp

とにかく、コメントで問題を見つけてくれたPrixに感謝します。この質問に対して私が今できる最善のことは、近いうちに投票することだと思います。

4

1 に答える 1