【问题标题】:Insert multiple values of input fields one column in rows in Codeigniter在 Codeigniter 的行中插入输入字段的多个值一列
【发布时间】:2019-08-25 12:28:03
【问题描述】:

我有一个包含一些输入字段和复选框的表单,我想将所有输入值插入一列(行)中。

这是我的表格:

<form action="" method="post">
<label>Built in year</label>
<input name="feature[]">

<label>View</label>
<input name="feature[]">

这是我的控制器:

function create_listing(){
        $this->load->view('form');
       if($_POST){

    $feature  = array ( 'feature' => $_POST['feature'] );

                foreach($feature as $fkey => $fvalue ){

                     $this->Mdata->f_detail($fvalue);

                }


        }

这是我的模型:

    function f_detail($fvalue){

             $this->db->insert('feature',$fvalue);
             return $this->db->insert_id();

}

我收到一个错误:

您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“0,1,2) VALUES ('build in year', 'view', 'parking space')' 附近使用的正确语法

INSERT INTO `feature` (0, 1, 2) VALUES ('build in year', 'view', 'parking space')

我的代码有什么问题。有谁请告诉我。

问候

【问题讨论】:

标签: php mysql codeigniter checkbox


【解决方案1】:

codeigniter 中使用$this-&gt;input-&gt;post() 代替$_POST() 两者是等价的。

控制器

function create_listing(){
    if($this->input->post()){
    $feature  = $this->input->post('feature');

    foreach($feature as $fkey => $fvalue ){

     $ids []= $this->Mdata->f_detail($fvalue);//$Ids is array of returned id

    }
    $this->load->view('form');//load view after database operations

}

型号

在您的模型中,您需要指定column name,如下所示:

  function f_detail($fvalue)
  {
     $this->db->insert('feature',array('column_name'=>$fvalue));//specify column name
     return $this->db->insert_id();

  }

【讨论】:

  • 如果我在模型中应用循环而不是控制器有什么办法
  • 是的,这是可能的。你需要传递特征数组$feature ,然后在那里使用循环。
  • 您是否使用上述答案或任何其他问题解决了它。
  • 实际上我的表单在两张表中插入数据,一张是特征,另一张是基本信息??这个正在工作,但问题是我的基本信息被多次插入。例如,如果用户检查 3 个功能,则基本信息也会插入 3 个重复数据。
  • 所以我希望用户基本信息插入一次,但由于 foreach 循环,这不会发生
【解决方案2】:

您可以使用implode 函数在一列中输入多个值。

控制器

function create_listing(){
    if($this->input->post()){
        $data = array (
            'feature' => implode(",", $this->input->post('feature'))
        );

        $this->Mdata->f_detail($data);
    }
    else{
        $data = array ();
        $this->load->view('form', $data);    
    }
}

型号

function f_detail($data){
    $this->db->insert('feature',$data);

    return $this->db->insert_id();
}

【讨论】:

  • 我想将 3 个字段的值插入到数据库的单个列中,您能帮我吗?
猜你喜欢
  • 2021-01-23
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
相关资源
最近更新 更多