首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在数据库中的Codeigniter中插入数组

在数据库中的Codeigniter中插入数组
EN

Stack Overflow用户
提问于 2016-11-08 07:24:45
回答 3查看 2.2K关注 0票数 1

这与一个小测验应用程序有关。从数据库中随机生成问题。用户通过单选按钮选择一个答案。答案连同问题ID和用户ID一起存储在数据库中。一切都很好。

问题是我有一个数组要存储在我的数据库中。下面是代码。

观点:

代码语言:javascript
运行
复制
<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();?>

控制器:

代码语言:javascript
运行
复制
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);
}

模型:

代码语言:javascript
运行
复制
function insert_ans($data) {
    foreach($data as $answer) {
        //var_dump($answer);
    }
    $this->db->insert_batch('tbl_answers', $data);        
}

以下是我遇到的错误:

代码语言:javascript
运行
复制
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

如何将数组存储到数据库中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-08 07:31:43

insert_batch中,您必须使用列名作为对每个值的关联索引,如下所示:

代码语言:javascript
运行
复制
$data = array( // array structure for batch insert method.
   array(
      'column1' => 'val' ,
      'column2' => 'val' ,      
   ),
   array(
      'column1' => 'val' ,
      'column2' => 'val' ,
   )
);

因此,您需要在这里修改输入字段,如下所示:

代码语言:javascript
运行
复制
<input type="radio" name="ans['ans_att'][<?php print $i; ?>]" value="4">

同样,对于所有其他字段,上面提到的数组只是数组结构的一个提示,您必须像前面提到的那样修改数组。

您还可以调试您的$data数组,这将帮助您理解,您在这里做什么,当前您的数组如下所示:

代码语言:javascript
运行
复制
$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

票数 1
EN

Stack Overflow用户

发布于 2016-11-08 07:32:59

您应该编码编码,编码方法。

示例:

代码语言:javascript
运行
复制
<?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记录之后,我希望这段代码有帮助。

票数 0
EN

Stack Overflow用户

发布于 2016-11-08 11:48:35

不能将数组存储在db中,请使用“内爆”函数将数组转换为字符串

主计长:

代码语言:javascript
运行
复制
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模型:

代码语言:javascript
运行
复制
function insert_ans($data) {

    $this->db->insert('tbl_answers', $data);        
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40481181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档