Php 更新会话数据不工作-CodeIgniter

Php 更新会话数据不工作-CodeIgniter,php,codeigniter,session,controller,disconnect,Php,Codeigniter,Session,Controller,Disconnect,我的问题很简单:我的表中有一个名为credit的字段 我想向连接的用户添加1credit,因此我更新了字段credit。更新工作正常,但当我想显示信用卡时,添加操作尚未完成 示例:用户Joe已使用2信用卡登录。我给他加了1个学分。它在数据库中工作,但不在屏幕上。如果他断开并重新连接,问题就解决了 因此,我想知道如何在不断开连接的情况下更新会话数据 控制器“LoginArea” $this->load->library('session'); $dataUser = array(

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

我想向连接的用户添加1
credit
,因此我更新了字段
credit
。更新工作正常,但当我想显示
信用卡时,添加操作尚未完成

示例:用户
Joe
已使用2
信用卡登录。我给他加了1个
学分
。它在数据库中工作,但不在屏幕上。如果他断开并重新连接,问题就解决了

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

控制器“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'])
                                        );

您需要将会话视为特定用户的(临时)“状态”

如果执行登录(LoginArea),则会从数据库(DBpermanentstorage/state)中获取当前用户数据(和信用)。然后将此用户数据保存在会话中

但是session和DB都是分离的,没有连接

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

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

  • 最简单的解决方案是移动初始化代码 在方法中创建会话,并在更新 数据库
  • 或者,在更新数据库后,加载当前会话,仅更新
    credit
    属性,并将其再次保存在会话中(覆盖)
  • ==>新的(更新的)数据将出现在会话UserData中