CodeIgniter - Lavorare con il database

Come ogni altro framework, dobbiamo interagire molto spesso con il database e CodeIgniter ci rende questo lavoro facile. Fornisce un ricco set di funzionalità per interagire con il database.

In questa sezione, capiremo come funzionano le funzioni CRUD (Crea, Leggi, Aggiorna, Elimina) con CodeIgniter. Noi useremostud tabella per selezionare, aggiornare, eliminare e inserire i dati in stud tavolo.

Nome tabella: stud
roll_no int (11)
nome varchar (30)

Connessione a un database

Possiamo connetterci al database nei due modi seguenti:

  • Automatic Connecting- La connessione automatica può essere eseguita utilizzando il file application / config / autoload.php. La connessione automatica caricherà il database per ogni pagina. Dobbiamo solo aggiungere la libreria del database come mostrato di seguito -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Se desideri la connettività al database solo per alcune pagine, possiamo optare per la connessione manuale. Possiamo connetterci al database manualmente aggiungendo la seguente riga in qualsiasi classe.

$this->load->database();

Qui, non stiamo passando alcun argomento perché tutto è impostato nel file di configurazione del database application / config / database.php

Inserimento di un record

Per inserire un record nel database, viene utilizzata la funzione insert () come mostrato nella tabella seguente:

Syntax

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

Parameters

  • $table( stringa ): nome della tabella

  • $set( array ) - Un array associativo di coppie campo / valore

  • $escape( bool ) - Indica se sfuggire a valori e identificatori

Returns

VERO in caso di successo, FALSO in caso di fallimento

Return Type

bool

L'esempio seguente mostra come inserire un record in studtavolo. $ Data è un array in cui abbiamo impostato i dati e per inserire questi dati nella tabellastud, dobbiamo solo passare questo array alla funzione di inserimento nel 2 ° argomento.

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

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

Aggiornamento di un record

Per aggiornare un record nel database, il update() funzione viene utilizzata insieme a set() e where()funzioni come mostrato nelle tabelle seguenti. Ilset() la funzione imposterà i dati da aggiornare.

Syntax

set ( $ key [, $ value = '' [, $ escape = NULL ]])

Parameters

  • $key( misto ): nome del campo o un array di coppie campo / valore

  • $value( stringa ) - Valore del campo, se $ chiave è un singolo campo

  • $escape( bool ) - Indica se sfuggire a valori e identificatori

Returns

Istanza CI_DB_query_builder (concatenamento di metodi)

Return Type

CI_DB_query_builder

Il where() la funzione deciderà quale record aggiornare.

Syntax

dove ( $ key [, $ value = NULL [, $ escape = NULL ]])

Parameters

  • $key( misto ): nome del campo da confrontare o matrice associativa

  • $value( misto ) - Se una singola chiave, rispetto a questo valore

  • $escape( bool ) - Indica se sfuggire a valori e identificatori

Returns

Istanza DB_query_builder

Return Type

oggetto

Infine, il update() la funzione aggiornerà i dati nel database.

Syntax

aggiornamento ([ $ table = '' [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]])

Parameters

  • $table( stringa ): nome della tabella

  • $set( array ) - Un array associativo di coppie campo / valore

  • $where( stringa ) - La clausola WHERE

  • $limit( int ) - La clausola LIMIT

Returns

VERO in caso di successo, FALSO in caso di fallimento

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);

Eliminazione di un record

Per eliminare un record nel database, viene utilizzata la funzione delete () come mostrato nella tabella seguente:

Syntax

elimina ([ $ table = '' [, $ where = '' [, $ limit = NULL [, $ reset_data = TRUE ]]]])

Parameters

  • $table( misto ) - Le tabelle da cui eliminare; stringa o matrice

  • $where( stringa ) - La clausola WHERE

  • $limit( int ) - La clausola LIMIT

  • $reset_data( bool ) - TRUE per reimpostare la clausola "write" della query

Returns

Istanza CI_DB_query_builder (concatenamento di metodi) o FALSE in caso di errore

Return Type

misto

Utilizzare il codice seguente per eliminare un record in studtavolo. Il primo argomento indica il nome della tabella da eliminare record e il secondo argomento decide quale record eliminare.

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

Selezione di un record

Per selezionare un record nel database, il get viene utilizzata la funzione, come mostrato nella tabella seguente:

Syntax

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

Parameters

  • $table( stringa ) - La tabella su cui interrogare l'array

  • $limit( int ) - La clausola LIMIT

  • $offset( int ) - La clausola OFFSET

Returns

Istanza CI_DB_result (concatenamento di metodi)

Return Type

CI_DB_result

Usa il codice seguente per ottenere tutti i record dal database. La prima istruzione recupera tutti i record dalla tabella "stud" e restituisce l'oggetto, che verrà archiviato in $ query object. La seconda istruzione chiama il fileresult() funzione con $ oggetto query per ottenere tutti i record come array.

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

Chiusura di una connessione

La connessione al database può essere chiusa manualmente, eseguendo il codice seguente:

$this->db->close();

Esempio

Crea una classe controller chiamata Stud_controller.php e salvalo in application/controller/Stud_controller.php

Ecco un esempio completo, in cui vengono eseguite tutte le operazioni sopra menzionate. Prima di eseguire il seguente esempio, creare un database e una tabella come indicato all'inizio di questo capitolo e apportare le modifiche necessarie nel file di configurazione del database memorizzato inapplication/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 classe modello chiamata Stud_Model.php e salvalo in 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 file di visualizzazione chiamato Stud_add.php e salvalo in 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 file di visualizzazione chiamato Stud_edit.php e salvalo in 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 file di visualizzazione chiamato Stud_view.php e salvalo in 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>

Apporta la seguente modifica al file di rotta in application/config/routes.php e aggiungi la seguente riga alla fine del file.

$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';

Ora, eseguiamo questo esempio visitando il seguente URL nel browser. Sostituisci yoursite.com con il tuo URL.

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