phpcodeigniterposttransposebatch-insert

Attempt to transpose then batch-insert user submission causes: "Unknown column 'Array' in 'field list'" error


I am getting an errors with CodeIgniter's insert_batch() method:

Unknown column 'Array' in 'field list'

and

Array to string conversion


View

<input type="text" name="companionship[]">
... and so forth.

Controller

public function addstatistics()
{   
     $i = 0;
     foreach ($_POST['companionship_id'] as $companionship_id):
        $value1[$i++] = array(
            'companionship_id'=>    $companionship_id
        );
     endforeach;
        
     foreach($_POST['zone_id'] as $zone_id):
            $value2[$i++] = array(
                    'zone_id'=> $zone_id
            );
     endforeach;
        
     foreach($_POST['district_id'] as $district_id):
            $value3[$i++] = array(
                'district_id'=> $district_id
            );
     endforeach;
        
     foreach($_POST['area_id'] as $area_id):
            $value4[$i++] = array(
                'area_id'=> $area_id
            );
     endforeach;
        
     foreach($_POST['baptism'] as $baptism):
            $value5[$i++] = array(
                'baptism'=> $baptism
            );
     endforeach;
        
     foreach($_POST['confirm'] as $confirm):
            $value6[$i++] = array(
                'confirm'=> $confirm
            );
     endforeach;
        
     foreach($_POST['ibd'] as $ibd):
            $value7[$i++] = array(
                'ibd'=> $ibd
            );
     endforeach;
        
     foreach($_POST['iasm'] as $iasm):
            $value8[$i++] = array(
                'iasm'=>$iasm
            );
     endforeach;
        
     foreach($_POST['ni'] as $ni):
            $value9[$i++] = array(
                'ni'=>$ni
            );
     endforeach;
        
     foreach($_POST['ph'] as $ph):
            $value10[$i++] = array(
                'ph'=>$ph
            );
     endforeach;
        
     foreach($_POST['wh'] as $wh):
        $value11[$i++] = array(
            'wh'=>$wh
        );
     endforeach;

   $this->my_model->addstatistics($value1,$value2,$value3,$value4, $value5,$value6,$value7,$value8,$value9,$value10,$value11);
 }   
    

Model

addstatistics($value1, $value2, $value3, $value4, $value5, $value6, $value7, $value8, $value9, $value10, $value11)
{
      $data = array(
                'companionship_id'  => $value1,
                'zone_id'           => $value2,
                'district_id'       => $value3,
                'area_id'           => $value4,
                'baptism'           => $value5,
                'confirm'           => $value6,
                'ibd'               => $value7,
                'iasm'              => $value8,
                'ni'                => $value9,
                'ph'                => $value10,
                'wh'                => $value11
                        
           );
                    
           $row = array();
           $columns = array();
           for($x=0; $x<count($data); $x++)
           {
                $row = array(
                    'companionship_id'=> $value1,
                    'zone_id'=> $value2,
                    'district_id'=> $value3,
                    'area_id'=> $value4,
                    'baptism'=> $value5,
                    'confirm'=> $value6,
                    'ibd'=> $value7,
                    'iasm'=> $value8,
                    'ni'=> $value9,
                    'ph'=> $value10,
                    'wh'=> $value11,
                    'year'=> date('Y'),
                    'month'=> date('M'),
                    'week' => weekdate(),
                 'created_by'=> $this->session->userdata('login_id')
            
           );
           array_push($columns, $row);
           $rows = array();
         }
          //printA($columns);
            
         $query= $this->db->insert_batch('monthly_statistics', $columns);
 }
    

How can I solve this problem?


Solution

  • after a few hours of pondering, I already fix the errors and now it working fine

    here is the code

    public function mymethod()
        {
    
    
    
            $companionship_id = $this->input->post('companionship_id[]');
            $zone_id = $this->input->post('zone_id[]');
            $district_id = $this->input->post('district_id[]');
            $area_id = $this->input->post('area_id[]');
            $baptism = $this->input->post('baptism[]');
            $confirm = $this->input->post('confirm[]');
            $ibd = $this->input->post('ibd[]');
            $iasm = $this->input->post('iasm[]');
            $ni = $this->input->post('ni[]');
            $ph = $this->input->post('ph[]');
            $wh = $this->input->post('wh[]');
    
            $value = array();
            for($i=0; $i<count($companionship_id); $i++)
            {
                $value[$i] = array(
                    'companionship_id'  =>      $companionship_id[$i],
                    'zone_id'           =>      $zone_id[$i],
                    'district_id'       =>      $district_id[$i],
                    'area_id'           =>      $area_id[$i],
                    'baptism'           =>      $baptism[$i],
                    'confirm'           =>      $confirm[$i],
                    'ibd'               =>      $ibd[$i],
                    'iasm'              =>      $iasm[$i],
                    'ni'                =>      $ni[$i],
                    'ph'                =>      $ph[$i],
                    'wh'                =>      $wh[$i]
    
                );
            }
    
            $this->db->insert_batch('monthly_statistics',$value);
    
    
            $this->session->set_flashdata("success",alert("alert-success","Successfully Inserted"));
            redirect(base_url('to_url'));
            exit();
        }