コントローラーの最初の機能で、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/