更新会话数据不起作用 - 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 保存在会话中。
但是会话和数据库都是分开的并且没有连接。
因此,如果您更改数据库,此更改不会反映在会话中,反之亦然。
现在更新数据库时,也需要更新会话。
所以这里有两种可能的解决方案:
- 最简单的解决方案是移动初始化代码
方法中的会话并在更新后再次调用它
数据库
- 或更新数据库后,加载当前会话,仅更新
credit
属性并在会话中再次保存(覆盖)
==> 新的(更新的)数据将出现在 Session-UserData
我的问题很简单:我的 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 保存在会话中。
但是会话和数据库都是分开的并且没有连接。
因此,如果您更改数据库,此更改不会反映在会话中,反之亦然。
现在更新数据库时,也需要更新会话。 所以这里有两种可能的解决方案:
- 最简单的解决方案是移动初始化代码 方法中的会话并在更新后再次调用它 数据库
- 或更新数据库后,加载当前会话,仅更新
credit
属性并在会话中再次保存(覆盖)
==> 新的(更新的)数据将出现在 Session-UserData