如何使用insert_batch在db中插入数据

时间:2015-07-28 06:35:25

标签: php html codeigniter

如何使用insert_batch通过使用for循环在数据库中添加多个数据请帮助我,因为我对codeigniter很新。

我的控制器

class Student extends CI_Controller {

public function _construct()
{
    parent::_construct();
    //call model
    $this->load->model("StudentModel","m");
}

function index()
{
    $this->load->view("index");
}
function savedata()
{                  
    $data = array(
             array(
  'studentname' => 'Reddy' ,
  'gender' => 'Male' ,
  'phone' => '456879'
  ),

 array(
      'studentname' => 'Yalla' ,
      'gender' => 'Female' ,
      'phone' => '12345678'
       )
    );
//mean that insert into database table name tblstudent

    $this->db->insert_batch('tblstudent',$data);

//mean that when insert already it will go to page index    
    redirect("Student/index");
}

function edit($id)
{
    $row=$this->m->getonerow($id);
    $data['r']=$row;
    $this->load->view('edit',$data);

}


function update($id)
    {
        $id=$this->input->post('id');
        $data=array(
                      'studentname' => $this->input->post('studentname'),
                      'gender'  =>  $this->input->post('gender'),
                      'phone'  =>  $this->input->post('phone')
                   );
                     $this->db->where('id',$id);
                     $this->db->update('tblstudent',$data);
                     redirect("Student/index");

    }
    function delete($id)
    {
        $id=$this->db->where('id',$id);
        $this->db->delete('tblstudent');
        redirect("Student/index");
    }

}

模型

class StudentModel extends CI_Model{

function _construct()
{
    parent::_construct();
}
function gettable()
{
    $query=$this->db->get('tblstudent');
    return $query->result();
}
function getonerow($id)
{
    $this->db->where('id',$id);
    $query = $this->db->get('tblstudent');
    return $query->row();

  }
}

1 个答案:

答案 0 :(得分:0)

首先,您不必在控制器中添加直接访问数据库。对于所有数据库访问代码,您必须创建模型。     在上面的代码中,您在直接控制器中添加了数据库访问代码,根据 MVC 体系结构,这在逻辑上是错误的。 下面是根据MVC的代码,所有数据库访问代码都驻留在Model中。 批量插入的主要问题是function insert()

of model。请仔细阅读。

<?php

class Student extends CI_Controller {

public function _construct()
{
    parent::_construct();
    //call model
    $this->load->model("StudentModel","m");
}

function index()
{
    $this->load->view("index");
}
function savedata()
{                  

    $stdarray = array();
    $stdarray[] = array('studentname' => 'Reddy' ,'gender' => 'Male' ,'phone' => '456879');
    $stdarray[] = array('studentname' => 'Yalla' ,'gender' => 'Female' ,'phone' => '12345678');
    //mean that insert into database table name tblstudent

    $this->db->insert_batch('tblstudent',$data);
    $this->m->insert($stdarray);

//mean that when insert already it will go to page index    
    redirect("Student/index");
}

function edit($id)
{
    $row=$this->m->getonerow($id);
    $data['r']=$row;
    $this->load->view('edit',$data);

}


function update($id)
    {
        $updateArray = array();
        $updateArray['studentname'] = $this->input->post('studentname');
        $updateArray['gender'] = $this->input->post('gender');
        $updateArray['phone'] = $this->input->post('phone');
        $whereArray = array();
        $whereArray['id'] = $id;
       $this->m->updateRow($updateArray,$whereArray);
       redirect("Student/index");

    }
    function delete($id)
    {
        $whereArray = array();
        $whereArray['id'] = $id;
        $this->m->deleteRow($whereArray);
        redirect("Student/index");
    }

}
?>

型号:     

class StudentModel extends CI_Model{

function _construct()
{
    parent::_construct();
}
function gettable()
{
    $query=$this->db->get('tblstudent');
    return $query->result();
}
function getonerow($id)
{
    $this->db->where('id',$id);
    $query = $this->db->get('tblstudent');
    return $query->row();

}
function insert($insrtArray)
{
    $success = $this->db->insert_batch('tblstudent', $insrtArray); 
}
function updateRow($updateArray,$whereArray)
{
    if(!empty($whereArray))
    {
        foreach ($whereArray as $key => $value) {
            $this->db->where($key,$value);
        }
    }       
        $this->db->update('tblstudent',$updateArray);
}
function deleteRow($whereArray)
{
    if(!empty($whereArray))
    {
        foreach ($whereArray as $key => $value) {
            $this->db->where($key,$value);
        }
    }
     $this->db->delete('tblstudent');
}
}
?>

重要事项:您必须对所有输入使用转义函数,这些输入直接发送到数据库以保持SQL注入的安全性。