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

问题描述 投票:0回答:1

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

我想向连接的用户添加1 credit,所以我更新了字段credit。更新效果很好,但是当我要显示credit时,添加操作尚未完成。

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

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

Controller'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'])
                                        );
php codeigniter session controller disconnect
1个回答
0
投票

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

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

但是会话和数据库都被分隔并且未连接

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.