【问题标题】:Codeigniter - Inserting data into MySQL where only one of the Input values is an arrayCodeigniter - 将数据插入 MySQL,其中只有一个输入值是数组
【发布时间】:2018-05-19 17:54:31
【问题描述】:

我正在学习 Codeigniter 并遇到了一些动荡。我的一个输入字段收集一组值(来自复选框),而其余的是单个值。我想以插入行数等于数组中值的数量的方式将数据插入 MySQLi。它看起来像:

我的控制器:

 function request_rooms() {     
      if ($_POST) {
        //room is an array or one or more values
        $this->form_validation->set_rules('room[]', 'Select Box', 'trim|required|min_length[1]|max_length[25]'); 
        $this->form_validation->set_rules('guest_id', 'Guest ID', 'trim|required|xss_clean|min_length[4]|max_length[20]');
         $this->form_validation->set_rules('date_in', 'Check-in Date', 'trim|required|exact_length[10]'); 
        $this->form_validation->set_rules('date_out', 'Check-out Date', 'trim|required|exact_length[10]'); 

        if ($this->form_validation->run($this) == FALSE) {
            $somedata = array('errors' => validation_errors());
            $this->session->set_flashdata($somedata);
            require("includes/load_view_reservation.php");
          } else {
               //Prepare data to send to Reservation model
               $data = array( 
               'room_no'  = ?
               'guest_id' = $this->input->post('guest_id'),
               'check_in' = $this->input->post('check_in'),
               'check_in' = $this->input->post('check_in')

             $this->reservation_model->insert_reservation($data);
              }       
       }
}

问题: 我的问题是如何处理房间阵列。我想为要插入数据库的数据创建一个 $data 数组。所以假设房间数组输入($this->input->post('room[]'))如下:

$room = array(42, 123, 16);

我希望 $data 数组是这样的:

 $data = array
  (
  array(
  "room_no" => "42",
  "guest_id" => "2",
  "date_in" => "2018-05-20",
  "date_out" => "2018-05-27"
  ),
  array(
  "room_no" => "123",
  "guest_id" => "2",
  "date_in" => "2018-05-20",
  "date_out" => "2018-05-27" ),
  array(
  "room_no" => "16",
  "guest_id" => "2",
  "date_in" => "2018-05-20",
  "date_out" => "2018-05-27" )
  );

我有一个模糊的想法,即循环可以完成这样的事情,以便数组的 room_no 部分具有数组中的每个值,而其他值保持不变,但我不知道如何继续。

问题:

如何在 Codeigniter 中创建像上面这样的多维数组?其次,到目前为止,我只使用 Codeigniter 模型插入(到 MySQL)一个简单的一维数组。如何插入一个像上面那样的多维数组?请帮忙。

【问题讨论】:

    标签: php codeigniter multidimensional-array


    【解决方案1】:

    希望对您有所帮助:

    第一种方法 插入个人记录;

    //$rooms = $this->input->post('room');
    $rooms = array(42, 123, 16);
    if ( ! empty($rooms))
    {
      foreach($rooms AS $room)
      {
        $data['room_no'] = $room;
        $data['guest_id'] = $this->input->post('guest_id');
        $data['check_in'] = $this->input->post('check_in');
    
        $this->reservation_model->insert_reservation($data);
      }
    }
    

    你的模型方法insert_reservation应该是这样的:

    public function insert_reservation($data)
    {
       return $this->db->insert('table_name',$data);
    }
    

    第二种方法 插入多条(批量)记录;

    //$rooms = $this->input->post('room');
    $rooms = array(42, 123, 16);
    if( ! empty($rooms))
    {
       foreach($rooms AS $room)
       {
          $data[] = [
                'room_no' => $room,
                'guest_id' => $this->input->post('guest_id'),
                'check_in' => $this->input->post('check_in'),
            ];
       }
    }
    //print_r($data);
    $this->reservation_model->insert_reservation($data);
    

    在这种情况下,您的模型方法insert_reservation 应该是这样的:

    public function insert_reservation($data)
    {
       return $this->db->insert_batch('table_name',$data);
    }
    

    更多:https://www.codeigniter.com/user_guide/database/query_builder.html#inserting-data

    【讨论】:

    • 这有帮助。干得好,赞
    【解决方案2】:

    只是遍历你的数组看起来并不难

    类似下面的东西应该可以完成这项工作。

    $room = array(42, 123, 16);
    
    $arrData = [];
    
    foreach($room AS $roomNo)
    {
        $arrData[] = [
            'room_no' => $roomNo,
            'guest_id' => $this->input->post('guest_id'),
            'check_in' = $this->input->post('check_in'),
            'check_in' = $this->input->post('check_in')
        ];
    }
    
    print_r($arrData);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      • 2014-07-21
      相关资源
      最近更新 更多