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
的字段
我想向连接的用户添加1credit
,因此我更新了字段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中