【问题标题】:Update session data not working - CodeIgniter更新会话数据不起作用 - CodeIgniter
【发布时间】:2020-03-21 16:10:14
【问题描述】:

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

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

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

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

控制器“登录区域”


$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】:

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

    如果执行登录 (LoginArea),则从您的数据库(数据库 永久 存储/状态)中获取当前用户数据(和积分)。这个 userData 然后保存在会话中。

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

    因此,如果您更改 DB,则此更改不会反映在 Session 中,反之亦然。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      • 2013-04-12
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多