这与一个小测验应用程序有关。从数据库中随机生成问题。用户通过单选按钮选择一个答案。答案连同问题ID和用户ID一起存储在数据库中。一切都很好。
问题是我有一个数组要存储在我的数据库中。下面是代码。
观点:
<div class="col-lg-8">
<table class="table" style="width: 100%;">
<?php $i = 0;
$ques = 1;
echo form_open ( 'Menu/submit_ans', array ('name' => 'quiz') );
foreach ( $quiz_array as $q ) { ?>
<td colspan="2" style="background-color: #337ab7; color: white;">
<h4>Question No. <?php echo $ques?> </h4>
</td>
<tr>
<td colspan="2"><?php echo $q->ques;?></td>
<input hidden name="qid[]" type="text" value="<?php echo $q->qid;?>">
<input hidden name="uid[]" type="text" value="<?php echo $user['id'];?>">
</tr>
<tr>
<td><?php echo $q->ans_1;?></td>
<td><input type="radio" name="ans[<?php print $i; ?>]" value="1"></td>
</tr>
<tr>
<td><?php echo $q->ans_2;?></td>
<td><input type="radio" name="ans[<?php print $i; ?>]" value="2"></td>
</tr>
<tr>
<td><?php echo $q->ans_3;?></td>
<td><input type="radio" name="ans[<?php print $i; ?>]" value="3"></td>
</tr>
<tr>
<td><?php echo $q->ans_4;?></td>
<td><input type="radio" name="ans[<?php print $i; ?>]" value="4"></td>
</tr>
<?php $i ++;
} ?>
</table>
<center>
<button class="btn btn-success" type="submit">Submit!</button>
<a></a>
</center>
</div>
<?php echo form_close();?>控制器:
function submit_ans() {
$data = array(
'qid' => $_POST['qid'],
'user_id' => $_POST['uid'],
'ans_att' => $_POST['ans']
);
$this->load->model('MyModel');
$this->MyModel->insert_ans($data);
}模型:
function insert_ans($data) {
foreach($data as $answer) {
//var_dump($answer);
}
$this->db->insert_batch('tbl_answers', $data);
}以下是我遇到的错误:
INSERT INTO `tbl_answers` () VALUES ('6','9','1','5','7','10','4','12','8','3','11','2'), ('1','1','1','1','1','1','1','1','1','1','1','1'), Array如何将数组存储到数据库中?
发布于 2016-11-08 07:31:43
在insert_batch中,您必须使用列名作为对每个值的关联索引,如下所示:
$data = array( // array structure for batch insert method.
array(
'column1' => 'val' ,
'column2' => 'val' ,
),
array(
'column1' => 'val' ,
'column2' => 'val' ,
)
);因此,您需要在这里修改输入字段,如下所示:
<input type="radio" name="ans['ans_att'][<?php print $i; ?>]" value="4">同样,对于所有其他字段,上面提到的数组只是数组结构的一个提示,您必须像前面提到的那样修改数组。
您还可以调试您的$data数组,这将帮助您理解,您在这里做什么,当前您的数组如下所示:
$data = array( // structure is not matched with required
'qid' => some encoded code,
'user_id' => array(1,1,2),
'ans_att' => array(1,1,2)
);手册将帮助您理解更多:http://www.codeigniter.com/userguide3/database/query_builder.html
发布于 2016-11-08 07:32:59
您应该编码编码,编码方法。
示例:
<?php
function submit_ans(){
$data = array(
'qid' => json_encode($_POST['qid']),
'user_id' => $_POST['uid'],
'ans_att' => $_POST['ans']
);
$this->load->model('MyModel');
$this->MyModel->insert_ans($data);
}
?>在使用json_decode()进行get记录之后,我希望这段代码有帮助。
发布于 2016-11-08 11:48:35
不能将数组存储在db中,请使用“内爆”函数将数组转换为字符串
主计长:
function submit_ans() {
$data = array(
'qid' => $_POST['qid'],
'user_id' => $_POST['uid'],
'ans_att' => implode(',',$_POST['ans'])
);
$this->load->model('MyModel');
$this->MyModel->insert_ans($data);
}只需在模型中使用插入函数,不需要insert_batch模型:
function insert_ans($data) {
$this->db->insert('tbl_answers', $data);
}https://stackoverflow.com/questions/40481181
复制相似问题