【发布时间】:2018-02-11 16:54:30
【问题描述】:
我正在使用 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);
}
}
表设置为
- answer_id(自动递增)
- quiz_id
- question_id
- user_id
- user_answer
变量转储
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)
【问题讨论】:
-
首先我会使用准备好的语句,这是codeigniter所没有的。我建议您在模型中使用 mysqli。您容易受到 sql 注入的攻击。
-
@Robert Rocha,只要他使用 db->插入他的“所有值都会自动转义,从而产生更安全的查询。”此外,您可以使用 PDO 和 mysqli 查询。根据 codeigniter 文档
标签: php mysql codeigniter foreach