CodeIgniter - Trabajar con base de datos

Como cualquier otro marco, necesitamos interactuar con la base de datos con mucha frecuencia y CodeIgniter nos facilita este trabajo. Proporciona un amplio conjunto de funcionalidades para interactuar con la base de datos.

En esta sección, entenderemos cómo funcionan las funciones CRUD (Crear, Leer, Actualizar, Eliminar) con CodeIgniter. Usaremosstud tabla para seleccionar, actualizar, eliminar e insertar los datos en stud mesa.

Nombre de la tabla: perno prisionero
roll_no int (11)
nombre varchar (30)

Conectarse a una base de datos

Podemos conectarnos a la base de datos de las siguientes dos formas:

  • Automatic Connecting- La conexión automática se puede realizar utilizando el archivo application / config / autoload.php. La conexión automática cargará la base de datos para todas y cada una de las páginas. Solo necesitamos agregar la biblioteca de la base de datos como se muestra a continuación:

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Si desea conectividad de base de datos solo para algunas de las páginas, podemos optar por la conexión manual. Podemos conectarnos a la base de datos manualmente agregando la siguiente línea en cualquier clase.

$this->load->database();

Aquí, no estamos pasando ningún argumento porque todo está configurado en el archivo de configuración de la base de datos application / config / database.php

Insertar un registro

Para insertar un registro en la base de datos, se utiliza la función insert () como se muestra en la siguiente tabla:

Syntax

insert ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]])

Parameters

  • $table( cadena ): nombre de la tabla

  • $set( matriz ): una matriz asociativa de pares de campo / valor

  • $escape( bool ): si se deben escapar valores e identificadores

Returns

VERDADERO en caso de éxito, FALSO en caso de fracaso

Return Type

bool

El siguiente ejemplo muestra cómo insertar un registro en studmesa. $ Data es una matriz en la que hemos establecido los datos y para insertar estos datos en la tablastud, Sólo tenemos que pasar esta matriz a la función de inserción en el 2 nd argumento.

$data = array( 
   'roll_no' => ‘1’, 
   'name' => ‘Virat’ 
); 

$this->db->insert("stud", $data);

Actualizar un registro

Para actualizar un registro en la base de datos, el update() La función se usa junto con set() y where()funciona como se muestra en las tablas siguientes. losset() La función configurará los datos que se actualizarán.

Syntax

set ( $ clave [, $ valor = '' [, $ escape = NULL ]])

Parameters

  • $key( mixto ): nombre de campo o una matriz de pares de campo / valor

  • $value( cadena ): valor del campo, si $ key es un solo campo

  • $escape( bool ): si se deben escapar valores e identificadores

Returns

Instancia de CI_DB_query_builder (encadenamiento de métodos)

Return Type

CI_DB_query_builder

los where() La función decidirá qué registro actualizar.

Syntax

donde ( $ clave [, $ valor = NULL [, $ escape = NULL ]])

Parameters

  • $key( mixto ): nombre del campo para comparar o matriz asociativa

  • $value( mixto ): si es una sola clave, en comparación con este valor

  • $escape( bool ): si se deben escapar valores e identificadores

Returns

Instancia de DB_query_builder

Return Type

objeto

Finalmente, el update() La función actualizará los datos en la base de datos.

Syntax

actualizar ([ $ tabla = '' [, $ conjunto = NULO [, $ donde = NULO [, $ límite = NULO ]]]])

Parameters

  • $table( cadena ): nombre de la tabla

  • $set( matriz ): una matriz asociativa de pares de campo / valor

  • $where( cadena ) - La cláusula WHERE

  • $limit( int ) - La cláusula LIMIT

Returns

VERDADERO en caso de éxito, FALSO en caso de fracaso

Return Type

bool
$data = array( 
   'roll_no' => ‘1’, 
   'name' => ‘Virat’ 
); 

$this->db->set($data); 
$this->db->where("roll_no", ‘1’); 
$this->db->update("stud", $data);

Eliminar un registro

Para eliminar un registro en la base de datos, la función delete () se usa como se muestra en la siguiente tabla:

Syntax

eliminar ([ $ tabla = '' [, $ donde = '' [, $ límite = NULL [, $ reset_data = TRUE ]]]])

Parameters

  • $table( mixto ): la (s) tabla (s) para eliminar; cadena o matriz

  • $where( cadena ) - La cláusula WHERE

  • $limit( int ) - La cláusula LIMIT

  • $reset_data( bool ) - TRUE para restablecer la cláusula "escribir" de la consulta

Returns

Instancia CI_DB_query_builder (encadenamiento de métodos) o FALSE en caso de falla

Return Type

mezclado

Utilice el siguiente código para eliminar un registro en el studmesa. El primer argumento indica el nombre de la tabla para eliminar el registro y el segundo argumento decide qué registro eliminar.

$this->db->delete("stud", "roll_no = 1");

Seleccionar un registro

Para seleccionar un registro en la base de datos, el get se utiliza la función, como se muestra en la siguiente tabla:

Syntax

get ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]])

Parameters

  • $table( cadena ): la tabla para consultar la matriz

  • $limit( int ) - La cláusula LIMIT

  • $offset( int ) - La cláusula OFFSET

Returns

Instancia CI_DB_result (encadenamiento de métodos)

Return Type

CI_DB_result

Utilice el siguiente código para obtener todos los registros de la base de datos. La primera instrucción obtiene todos los registros de la tabla "stud" y devuelve el objeto, que se almacenará en $ query object. La segunda declaración llama alresult() función con $ query object para obtener todos los registros como matriz.

$query = $this->db->get("stud"); 
$data['records'] = $query->result();

Cerrar una conexión

La conexión a la base de datos se puede cerrar manualmente, ejecutando el siguiente código:

$this->db->close();

Ejemplo

Crea una clase de controlador llamada Stud_controller.php y guárdalo en application/controller/Stud_controller.php

Aquí hay un ejemplo completo, en el que se realizan todas las operaciones mencionadas anteriormente. Antes de ejecutar el siguiente ejemplo, cree una base de datos y una tabla como se indica al comienzo de este capítulo y realice los cambios necesarios en el archivo de configuración de la base de datos almacenado enapplication/config/database.php

<?php 
   class Stud_controller extends CI_Controller {
	
      function __construct() { 
         parent::__construct(); 
         $this->load->helper('url'); 
         $this->load->database(); 
      } 
  
      public function index() { 
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
			
         $this->load->helper('url'); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function add_student_view() { 
         $this->load->helper('form'); 
         $this->load->view('Stud_add'); 
      } 
  
      public function add_student() { 
         $this->load->model('Stud_Model');
			
         $data = array( 
            'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') 
         ); 
			
         $this->Stud_Model->insert($data); 
   
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function update_student_view() { 
         $this->load->helper('form'); 
         $roll_no = $this->uri->segment('3'); 
         $query = $this->db->get_where("stud",array("roll_no"=>$roll_no));
         $data['records'] = $query->result(); 
         $data['old_roll_no'] = $roll_no; 
         $this->load->view('Stud_edit',$data); 
      } 
  
      public function update_student(){ 
         $this->load->model('Stud_Model');
			
         $data = array( 
            'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') 
         ); 
			
         $old_roll_no = $this->input->post('old_roll_no'); 
         $this->Stud_Model->update($data,$old_roll_no); 
			
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function delete_student() { 
         $this->load->model('Stud_Model'); 
         $roll_no = $this->uri->segment('3'); 
         $this->Stud_Model->delete($roll_no); 
   
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
   } 
?>

Crea una clase modelo llamada Stud_Model.php y guárdalo en application/models/Stud_Model.php

<?php 
   class Stud_Model extends CI_Model {
	
      function __construct() { 
         parent::__construct(); 
      } 
   
      public function insert($data) { 
         if ($this->db->insert("stud", $data)) { 
            return true; 
         } 
      } 
   
      public function delete($roll_no) { 
         if ($this->db->delete("stud", "roll_no = ".$roll_no)) { 
            return true; 
         } 
      } 
   
      public function update($data,$old_roll_no) { 
         $this->db->set($data); 
         $this->db->where("roll_no", $old_roll_no); 
         $this->db->update("stud", $data); 
      } 
   } 
?>

Crea un archivo de vista llamado Stud_add.php y guárdalo en application/views/Stud_add.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
   <body> 
         <?php 
            echo form_open('Stud_controller/add_student');
            echo form_label('Roll No.'); 
            echo form_input(array('id'=>'roll_no','name'=>'roll_no')); 
            echo "<br/>"; 
			
            echo form_label('Name'); 
            echo form_input(array('id'=>'name','name'=>'name')); 
            echo "<br/>"; 
			
            echo form_submit(array('id'=>'submit','value'=>'Add')); 
            echo form_close(); 
         ?> 
   </body>
</html>

Crea un archivo de vista llamado Stud_edit.php y guárdalo en application/views/Stud_edit.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
	
   <body> 
      <form method = "" action = "">
		
         <?php 
            echo form_open('Stud_controller/update_student'); 
            echo form_hidden('old_roll_no',$old_roll_no); 
            echo form_label('Roll No.'); 
            echo form_input(array('id'⇒'roll_no',
               'name'⇒'roll_no','value'⇒$records[0]→roll_no)); 
            echo "
            "; 

            echo form_label('Name'); 
            echo form_input(array('id'⇒'name','name'⇒'name',
               'value'⇒$records[0]→name)); 
            echo "
            "; 

            echo form_submit(array('id'⇒'sub mit','value'⇒'Edit')); 
            echo form_close();
         ?> 
			
      </form> 
   </body>
	
</html>

Crea un archivo de vista llamado Stud_view.php y guárdalo en application/views/Stud_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head>
	
   <body> 
      <a href = "<?php echo base_url(); ?>
         index.php/stud/add_view">Add</a>
		
      <table border = "1"> 
         <?php 
            $i = 1; 
            echo "<tr>"; 
            echo "<td>Sr#</td>"; 
            echo "<td>Roll No.</td>"; 
            echo "<td>Name</td>"; 
            echo "<td>Edit</td>"; 
            echo "<td>Delete</td>"; 
            echo "<tr>"; 
				
            foreach($records as $r) { 
               echo "<tr>"; 
               echo "<td>".$i++."</td>"; 
               echo "<td>".$r->roll_no."</td>"; 
               echo "<td>".$r->name."</td>"; 
               echo "<td><a href = '".base_url()."index.php/stud/edit/"
                  .$r->roll_no."'>Edit</a></td>"; 
               echo "<td><a href = '".base_url()."index.php/stud/delete/"
                  .$r->roll_no."'>Delete</a></td>"; 
               echo "<tr>"; 
            } 
         ?>
      </table> 
		
   </body>
	
</html>

Realice el siguiente cambio en el archivo de ruta en application/config/routes.php y agregue la siguiente línea al final del archivo.

$route['stud'] = "Stud_controller"; 
$route['stud/add'] = 'Stud_controller/add_student'; 
$route['stud/add_view'] = 'Stud_controller/add_student_view'; 
$route['stud/edit/(\d+)'] = 'Stud_controller/update_student_view/$1'; 
$route['stud/delete/(\d+)'] = 'Stud_controller/delete_student/$1';

Ahora, ejecutemos este ejemplo visitando la siguiente URL en el navegador. Reemplace el yoursite.com con su URL.

http://yoursite.com/index.php/stud