我正在为我正在开发的网站进行一系列测验,但在保存用户数据时遇到了一些麻烦。结构有点奇怪,所以这可能与即将出现的问题有关。我的测验控制器标记为 Quiz1、Quiz2 等,并加载一个名为 Quizzer 的函数,在 jquery 中进行监听。每当在测验页面上单击单选按钮时,jquery 都会激活 Quizzer 以记录用户输入。这是示例代码:
这是加载页面的代码:
public function Quiz4(){
$this->load->view("site_header");
$this->load->view("site_nav");
$this->load->model("quiz_model");
$this->data['choices'] = $this->quiz_model->get_records('quiz_4');
$this->load->view("student/quiztest", $this->data);
$quiz = 4;
$this->Quizzer($quiz);
$this->load->view("site_footer");
}
值 4 被传递给 Quizzer,因此它知道要在数据库中写入哪个测验。
这是控制器测验器:
public function Quizzer($qid){
$this->load->model("quiz_model");
$user = $this->ion_auth->user()->row();
$user_id = $user->id;
$data = array(
'answer' => $this->input->post('answer')
);
$question = $this->input->post('question');
echo $qid;
$this->quiz_model->update_record($data, $user_id, $qid, $question);
}
$user_id 告诉哪个用户登录了 $data 和 $question 标识用户从哪个组单击了哪个单选按钮。
$qid 应该指出用户在哪个测验页面上,在这个测试的情况下,它回显了一个 4,所以我知道它正在获取数据,但它仍然不会写入数据库。我发现手动输入 4 而不是 $qid 会使函数工作,但当前的 $qid 变量不会被接受。
这是保存到数据库的模型函数:
function update_record($data, $uid, $quiz, $question)
{
echo $quiz;
$this->db->where('uid', $uid);
$this->db->where('quiz', (int)$quiz);
$this->db->where('question', $question);
$this->db->update('quiz_results', $data);
}
我尝试将 $quiz 强制转换为 int 以尝试使数据类型匹配,但这个技巧也不起作用。基于当我手动输入 4 而不是将其作为变量传递时函数的行为方式,这看起来像是数据类型的问题(这就是我尝试进行类型转换的原因)。