如何将多行插入mysql数据库

时间:2013-04-14 07:18:53

标签: php html mysql codeigniter-2 codeigniter-form-helper

我有一个学期的上传结果表格。我已经收集了某个学期的所有科目和学生名单。但我的问题是我无法将结果插入数据库。只插入一行,

控制器

    $data=array();
    for($i=0;$i<count($_POST['Number']);$i++){
            if($_POST['Number'][$i] != ''){
                $data=array(
                        'Id'=>$_POST['id'][$i],
                        'Dept'=>$_POST['Dept'][$i],
                        'SubjectCode'=>$_POST['sCode'][$i],
                        'SubjectName'=>$_POST['sName'][$i],
                        'Semister'=>$_POST['Semister'][$i],
                        'MidNumber'=>$_POST['Number'][$i]
                        );
                $this->load->model('Upload_Result_model');
                $this->Upload_Result_model->upload_midResult($data);
            }
    }

形式:

<table>
<tr>
    <th>Student ID</th>
    <?php foreach($subjects as $s):?>
    <th><?php echo $s->subjectName;   echo "<br>";   echo "(".$s->subjectCode.")"; ?></th>
    <?php foreach($student as $st):?>
    <input type='hidden' id='id[]' name='id[]' value='<?php echo $st->Id;?>'>
    <?php endforeach;?>
    <input type='hidden' name='Dept[]' id='Dept[]' value=<?php echo $Dept;?>>
    <input type='hidden' name='Semister[]' id='Semister[]' value=<?php echo $Semister;?>>
    <input type='hidden' id='sCode[]' name='sCode[]' value='<?php echo $s->subjectCode?>'>
    <input type='hidden' id='sName[]' name='sName[]' value='<?php echo $s->subjectName?>'>
    <?php endforeach;?>
</tr>
<?php foreach($student as $st):?>
<tr>
    <td><?php echo $st->Id?></td>
    <?php for($i=0;$i<count($subjects);$i++):?>
    <td><input type='text' size='7' id='Number[]' name='Number[]'/></td>
    <?php endfor;?>
</tr>

如果有人解决这个问题,对我来说会非常有帮助

2 个答案:

答案 0 :(得分:1)

我不认为html表单元素会以php中的数组形式出现。尝试执行print_r($_POST);以查看传递的变量及其值。他们可能只是用逗号分隔。

我认为您可能需要执行$_POST['id']=explode(',',$_POST['id']);等操作来解决问题

Numbers变量还有其他问题,你应该查看

答案 1 :(得分:0)

我想

    foreach($student as $st):

应该在之后。现在您打开多行,但不关闭它们。 Ids也在2 for循环中,所以它们比其他元素更多,我不确定这是否是你尝试做的。

所以,如果可以,你可以尝试:

    $Numbers = @$_POST['Number'];
    $ids = @$_POST['id'];

    foreach($Numbers as $a => $b)
    {
      if($Numbers[$a]!='')
      { 
         $data=array(
                    'Id'=>$ids[$a];, ... }
      }
    }