我在我的模型中使用了CodeIgniter会话来保存数据库查询的结果,这是我第一次使用var_dump函数在会话变量中查看结果保存并且一切正常,但是当我使用相同的会话来显示时导致我的控制器中的其他功能只显示结果的最后一行而不是最初保存在会话中的所有结果。
**Students Controller**
function get_student(some parameters)
{
$print_result= $this->course_booking_model->get_student_ajax($config["per_page"],$page,$result,$tennant_id,$sort_by,$sort_order);
$this->session->set_userdata('print_result',$print_result);
$data['data_student'] = $this->session->userdata('print_result');
var_dump($this->session->userdata('print_result'));
}
同一控制器中的另一个功能
function export_students()
{
$data['data_print']=$this->session->userdata('print_result');
$this->load->view('view_students_pdf',$data);
var_dump($this->session->userdata('print_result'));
}
var_dump函数将具有不同的输出
答案 0 :(得分:1)
当您使用$this->session->set_userdata('print_result','value')
时,您设置变量的值就像调用$print_result = 'value';
一样,这意味着前一个值将始终被覆盖。如果您希望继续将值附加到会话数据变量,我建议您使用数组作为值,您只需要检索当前数据并在每次要更新值时将新元素附加到数组。类似的东西:
第一个值
$this->session->set_userdata('print_result',array($print_result));
附加新值
$this->session->set_userdata('print_result',array_push($this->session->userdata('print_result'),$new_result));
答案 1 :(得分:1)
尝试这种方法:
控制器功能1:
$query = $this->course_booking_model->get_student_ajax($config["per_page"],$page,$result,$tennant_id,$sort_by,$sort_order);
$new_data=array(
'pdf_data' => $query
);
$this->session->set_userdata($new_data);
var_dump($this->session->userdata('pdf_data'));
控制器功能2:
$data=$this->data;
$tennant_code=$this->session->userdata('username');
$query=$this->session->userdata('pdf_data');
var_dump($query);