更新会话数据不起作用 - CodeIgniter

Update session data not working - CodeIgniter

我的问题很简单:我的 table 中有一个名为 credit 的字段。

我想为连接的用户添加 1 credit,因此我更新了字段 credit。更新效果很好,但是当我想显示credit时,添加没有完成

示例:用户 Joe 已使用 2 credit 登录。我加他1credit。它在数据库中有效,但在屏幕上无效。如果他断开连接并重新连接,问题就解决了。

所以,我想知道如何在不断开连接的情况下更新会话数据

控制器'LoginArea'


$this->load->library('session');
$dataUser = array(
    'id' =>     $ligneBDD->{'id_user'},
    'name' =>   $ligneBDD->{'name'},
    'credit' => $ligneBDD->{'credit'}
);

// i store id, name and credit in my session
$this->session->set_userdata('data', $dataUser);


这是我的更新:

$update= $this->User_model->update(array(
                                    'credit' => $userConnected['credit'] - 1
                                        ),  
                                        array(
                                        'id_user' => $userConnected['id'])
                                        );

您需要将会话视为特定用户的(临时)"State"。

如果执行登录 (LoginArea),将从您的数据库 (DB permanent storage/state) 获取当前用户数据(和积分)。然后将此 userData 保存在会话中。

但是会话和数据库都是分开的并且没有连接

因此,如果您更改数据库,此更改不会反映在会话中,反之亦然。

现在更新数据库时,也需要更新会话。 所以这里有两种可能的解决方案:

  1. 最简单的解决方案是移动初始化代码 方法中的会话并在更新后再次调用它 数据库
  2. 或更新数据库后,加载当前会话,仅更新 credit 属性并在会话中再次保存(覆盖)

==> 新的(更新的)数据将出现在 Session-UserData