在我的控制器的第一个功能中,我使用 CI 活动记录从 mysql 表中获取随机记录
$query = $this->db->query("SELECT DISTINCT * FROM questions WHERE `level` = '1' ORDER BY RAND() limit 0,5");
$result = $query->result_array();
并将结果保存在会话中
// saving questions id in session
for($i = 0; $i < count($result); $i++)
{
$session['questionsId'][] = $result[$i]['qId'];
}
$this->session->set_userdata($session);
如果打印会话变量,它会显示如下输出:
$qIds_o = $this->session->userdata('questionsId');
var_debug($qIds_o);
Array
(
[0] => 5
[1] => 9
[2] => 3
[3] => 6
[4] => 11
)
但是如果我在同一控制器的另一个功能中检索相同的会话,它会显示不同的结果
$qIds = $this->session->userdata('questionsId');
var_debug($qIds);
Array
(
[0] => 2
[1] => 8
[2] => 6
[3] => 3
[4] => 5
)
如果我ORDER BY RAND()
从 mysql 查询中删除,例如:
$this->db->query("SELECT DISTINCT * FROM questions WHERE `level` = '1' limit 0,5");
它在两个函数中显示相同的会话数组。很奇怪。
请大神指点下是什么问题......
这是我的控制器脚本:
public function set_value(){
$query = $this->db->query("SELECT DISTINCT * FROM questions WHERE `level` = '1' ORDER BY RAND() limit 0,5");
$result = $query->result_array();
// saving questions id in session
for($i = 0; $i < count($result); $i++)
{
$session['questionsId'][] = $result[$i]['qId'];
}
$this->session->set_userdata($session);
$qIds_o = $this->session->userdata('questionsId');
var_debug($qIds_o);
}
public function get_value(){
$qIds = $this->session->userdata('questionsId');
var_debug($qIds);
}
我在页面加载时调用set_value()
了页面加载,而一旦页面加载,我就get_value()
使用AJAX post
它来调用它并简单地点击my_controller/get_value/
并响应浏览器。