Php 在Codeigniter中两次发布同一控制器时使用flashdata

Php 在Codeigniter中两次发布同一控制器时使用flashdata,php,codeigniter,Php,Codeigniter,我正试图提交一份编辑表单来编辑用户的详细信息, 这些详细信息在DB中具有唯一id,简而言之,我的代码如下所示: class edit extends ci_controller { function user_academics($id = NULL) { if(isset($id) == FALSE) //if link is ./edit/user_academics { $id = NULL;

我正试图提交一份编辑表单来编辑用户的详细信息, 这些详细信息在DB中具有唯一id,简而言之,我的代码如下所示:

class edit extends ci_controller
{

function user_academics($id = NULL)
    {
        if(isset($id) == FALSE)     //if link is ./edit/user_academics
        {
            $id = NULL;
            $link = site_url('profile');
            show_error("Invalid Page Request! <a href='$link' Go to Profile </a>");
        }

        $user_id = $this->session->userdata('user_id');        
        $data['fill'] = $this->edit_model->get_user_academics($id);

        if($user_id != $data['fill']['user_id'])    // check if logged in user is accessing his record or others
        {
             $link = site_url('profile');
            show_error("This is an Invalid Request ! <a href='$link'>Go to Profile </a>");
        }
        else // actual work starts here
        {
            $this->session->set_flashdata('ua_id',$id); // update_academics will get this data

            $this->load->view('edit/edit_3_view',$data);

        }
    }

 function update_academics()
    {
        $ua_id =  $this->session->flashdata('ua_id');   // flash data used here .
        if( !$ua_id )
        {
            show_error('Sorry, This request is not valid!');

        }
      $academics = array( 
            // All post values
        );

        $this->edit_model->update_user_academics($academics,$ua_id);
        //print_r($academics);
        redirect('profile');

    }

}
类编辑扩展ci_控制器
{
函数用户\u($id=NULL)
{
if(isset($id)==FALSE)//如果链接为./edit/user\u
{
$id=NULL;
$link=site_url('profile');
显示错误(“无效页面请求!”);
}
否则//实际工作从这里开始
{
$this->session->set_flashdata('ua_id',$id);//update_将获取此数据
$this->load->view('edit/edit_3_view',$data);
}
}
函数更新()
{
$ua_id=$this->session->flashdata('ua_id');//此处使用的闪存数据。
如果(!$ua\U id)
{
show_error('抱歉,此请求无效!');
}
$academics=数组(
//所有职位价值观
);
$this->edit_model->update_user_academics($academics,$ua_id);
//印刷(学术);
重定向(“配置文件”);
}
}
现在的问题是 -如果我打开两个不同的记录进行编辑,那么它将只设置一个会话闪存值。 -无论我编辑什么,最后一个flash值的现有值都会更新。
请建议我另一种方式或纠正我,如果我在上述代码错误。谢谢

将flashdata保存在数组中,如:

$myArr = array('value 1', 'value 1');
//set it
$this->session->set_flashdata('some_name', $myArr);
鉴于:

$dataArrs = $this->session->flashdata('some_name');
//loop thru $dataArrs to show the flashdata

闪存数据就像变量一样,只有在下一个请求中才可用。您可以通过使用两个不同的键(其中包含记录id)来绕过此行为,以便在使用闪存数据显示消息时,可以访问具有特定记录id的键。

尝试将$id存储在数组中$数据[]=$id;然后传递数组或序列化数组并将其传递到FlashDataOK谢谢,我想我会再次使用id参数。还有你的建议。