我正在尝试从表单中的字段在mysql表中插入数据。但是,字段是动态分配的,这意味着名称是通过编程设置的。以下是此示例

<?php for ($i=1; $i<=$nombre_parents_arr; $i++): ?>

<div class="form-group">
    <?php echo form_label('Nom' . " " . $i) ; ?>
    <?php
        $data = array(
            'class' => 'form-control',
            'name' => 'nom' . $i,
            'rows' => '3',
            'placeholder' => 'Merci de preciser les infos ici'
        );
    ?>
    <?php echo form_textarea($data); ?>
</div>




在我的模型中,我需要获取帖子并将其存储在数据库中。我做了以下

public function fill_family(){
    $number = $this->input->post('number');
    $data = array(
        'user_id'       =>$this->session->userdata('user_id')
    );
    for($i=1; $i<=$number; $i++){
        array_push($data, $this->input->post('nom' . $i));
    }
    $insert_data = $this->db->insert('temp', $data);
    //var_dump($data);
    return $insert_data;
}


单击我的表单上的提交时,我在浏览器中收到以下错误。


  错误号:1064
  
  您的SQL语法有误。检查与您的> MySQL服务器版本相对应的手册,以在第1行的'0,1,2)VALUES('42','samer1','samer2','samer3')'附近使用正确的语法
  
  插入tempuser_id,0,1,2)值('42','samer1','samer2',>'samer3')


我将表中的列重命名为user_id,0、1和2,因为它是在查询中生成的,但仍无法正常工作。

我的猜测是,这与不知道列的正确名称有关,因此我在模型中的for循环中执行了此操作

'nom' . $i => $this->input->post('nom' . $i);


但是我从mysql保留了相同的错误。谁能为我提供我的错误根源的线索?

谢谢

最佳答案

更改查询-

$q=0;
foreach($this->input->post('number') as $number)
{
    if($number!='')
    {
        $data = array(
        "user_id" =>$this->session->userdata('user_id'),
        'nom' . $q =>$this->input->post('value_of_html_name_attribute ')[$q],
        'nom' . $q =>input->post('value_of_html_name_attribute ')[$q],
        'nom' . $q =>input->post('value_of_html_name_attribute ')[$q],
        );

        $this->db->insert('temp',$data);
    }

    $q++;
}


希望这会成功!

关于php - 将值发布到MySQL数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36528962/

10-09 06:32
查看更多