**答案:我需要“反序列化”我的会话变量才能使用。啊。
$ eventTypeID = unserialize($ this-> session-> userdata('eventtypeID'));
我意识到这是一个令人讨厌的话题,但对CI来说是新手,我通过大多数文档阅读过,但在正确设置/获取会话时我必须忽略一些东西。
我已按照此帖中的配置进行操作,并确认FF正在存储Cookie:http://codeigniter.com/forums/viewthread/178904/
我的应用程序设置方式,用户从2个下拉列表中选择值,然后将这些值放入会话变量并调用新视图。在新视图中,我需要能够访问会话变量并将它们传递给查询我的数据库。就目前情况而言,当我查看查询时,没有会向其发送会话值。
非常感谢所有的帮助!谢谢!
以下编辑:似乎没有发生会话变量(数组)的设置。
以下是我的设置代码:
public function goSearch(){
if( !empty( $_POST ) ) {
$this->load->library('session');
$searchData = array(
'eventtypeID' => serialize($this->input->post('pEventType')),
'venuecityID' => serialize($this->input->post('pVenueCity'))
);
$this->session->set_userdata($searchData); /*ERROR: Nothing is being set. I've done print_r on $searchData, which returns values, but if I do:
$test = $this->session->set_userdata($searchData);
Print_r($test);
Nothing is returned */
$this->_displayPublicPage('search', NULL);
}
}
这是我传递给查询的函数:
public function readEvents(){
$eventTypeID = $this->session->userdata(‘eventtypeID’);
$venueCityID = $this->session->userdata(‘venuecityID’);
echo json_encode($this->event_model->getSearchEvents($eventTypeID, $venueCityID));
}
这是我的模型中的查询:
public function getSearchEvents($eventTypeID, $venueCityID){
$eventTypeID = intval($eventTypeID);
$venueCityID = intval($venueCityID);
$this->db->select('*');
$this->db->where('event_status =', 'A');
$this->db->where('eventtype.eventtype_id =', $eventTypeID);
$this->db->where('city.city_id =', $venueCityID);
$this->db->join('eventtype', 'event.fk_eventtype_id = eventtype.eventtype_id');
$this->db->join('venue', 'event.fk_venue_id = venue.venue_id');
$this->db->join('city', 'venue.fk_city_id = city.city_id');
$this->db->join('tickets', 'event.event_id = tickets.fk_event_id');
$this->db->from('event');
$this->db->_compile_select();
$q = $this->db->get();
echo $this->db->last_query();
if( $q->num_rows() > 0 ) {
return $q->result();
} else {
return array();
}
}
答案 0 :(得分:0)
如果您使用cookie来存储会话数据,则必须在set_userdata()之后重新加载页面。这是因为cookie是在http标头内发送的。
无论如何,当你想要的是在控制器和模型或视图之间传递变量时,无需使用会话。
答案 1 :(得分:0)
一旦传过来,我的数据没有反序列化。啊。立即行动。