我正在使用codeigniter框架,我在尝试从表单中保存数据时遇到了一些问题。
如何为包含其他信息的每个user_answer插入新行?
谢谢!
这是我在控制器中的foreach循环和对模型的调用
foreach($_POST as $key => $val)
{
$data[$key] = $this->input->post($key);
}
$this->quiz_model->save_answers($data);
这是模型
function save_answers($data)
{
foreach ($data['user_answer'] as $key) {
$this->db->insert('answer', $data);
}
}
表格设置为
Var转储
data => array(3) { ["user_id"]=> string(9) "anonymous" ["quiz_id"]=> string(2) "24" ["question_id"]=> string(2) "18" ["user_answer"]=> array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } }
data['user_answers'] => array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
错误
Error Number: 1054
Unknown column 'Array' in 'field list'
INSERT INTO `answer` (`user_id`, `quiz_id`, `question_id`, `user_answer`) VALUES ('anonymous', '24', Array)
答案 0 :(得分:2)
您应该为每个user_answer创建一组新数据。试试这个:
function save_answers($data)
{
foreach ($data['user_answer'] as $key) {
$new_data = array('user_id' => $data['user_id'], 'quiz_id' => $data['quiz_id'], 'question_id' => $data['question_id'], 'user_answer' => $key)
$this->db->insert('answer', $new_data);
}
}
答案 1 :(得分:0)
您在foreach
循环中遇到问题。将您的save_answers
方法更改为:
function save_answers($data)
{
foreach ($data['user_answer'] as $key=>$value) { //<------------change here
$data_insert = array('user_id'=>$data['user_id'],'quiz_id'=>$date['quiz_id'],'question_id'=>$data['question_id'],'user_answer'=>$value); //create new array
$this->db->insert('answer', $data_insert);//<------------change here
}
}