CodeIgniter - Arbeiten mit der Datenbank

Wie bei jedem anderen Framework müssen wir sehr oft mit der Datenbank interagieren, und CodeIgniter erleichtert uns diese Aufgabe. Es bietet eine Vielzahl von Funktionen für die Interaktion mit der Datenbank.

In diesem Abschnitt erfahren Sie, wie die CRUD-Funktionen (Erstellen, Lesen, Aktualisieren, Löschen) mit CodeIgniter funktionieren. Wir werden verwendenstud Tabelle zum Auswählen, Aktualisieren, Löschen und Einfügen der Daten in stud Tabelle.

Tabellenname: Stud
roll_no int (11)
Name varchar (30)

Herstellen einer Verbindung zu einer Datenbank

Wir können auf zwei Arten eine Verbindung zur Datenbank herstellen:

  • Automatic Connecting- Die automatische Verbindung kann über die Datei application / config / autoload.php hergestellt werden. Durch die automatische Verbindung wird die Datenbank für jede Seite geladen. Wir müssen nur die Datenbankbibliothek wie unten gezeigt hinzufügen -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Wenn Sie nur für einige Seiten eine Datenbankverbindung wünschen, können Sie eine manuelle Verbindung herstellen. Wir können manuell eine Verbindung zur Datenbank herstellen, indem wir in jeder Klasse die folgende Zeile hinzufügen.

$this->load->database();

Hier übergeben wir kein Argument, da alles in der Datenbankkonfigurationsdatei application / config / database.php festgelegt ist

Einfügen eines Datensatzes

Um einen Datensatz in die Datenbank einzufügen, wird die Funktion insert () wie in der folgenden Tabelle gezeigt verwendet:

Syntax

Einfügen ([ $ table = '' [, $ set = NULL [, $ Escape = NULL ]]])

Parameters

  • $table( Zeichenfolge ) - Tabellenname

  • $set( Array ) - Ein assoziatives Array von Feld / Wert-Paaren

  • $escape( bool ) - Gibt an, ob Werte und Bezeichner maskiert werden sollen

Returns

WAHR beim Erfolg, FALSCH beim Scheitern

Return Type

Bool

Das folgende Beispiel zeigt, wie Sie einen Datensatz einfügen studTabelle. Die $ data sind ein Array, in dem wir die Daten festgelegt und diese Daten in die Tabelle eingefügt habenstud, Müssen wir nur dieses Feld zu der in dem 2 - Insert - Funktion übergeben nd Argument.

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

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

Einen Datensatz aktualisieren

Um einen Datensatz in der Datenbank zu aktualisieren, müssen Sie die update() Funktion wird zusammen mit verwendet set() und where()Funktionen wie in den folgenden Tabellen gezeigt. Dasset() Die Funktion legt die zu aktualisierenden Daten fest.

Syntax

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

Parameters

  • $key( gemischt ) - Feldname oder ein Array von Feld / Wert-Paaren

  • $value( Zeichenfolge ) - Feldwert, wenn $ key ein einzelnes Feld ist

  • $escape( bool ) - Gibt an, ob Werte und Bezeichner maskiert werden sollen

Returns

CI_DB_query_builder-Instanz (Methodenverkettung)

Return Type

CI_DB_query_builder

Das where() Die Funktion entscheidet, welcher Datensatz aktualisiert werden soll.

Syntax

wobei ( $ key [, $ value = NULL [, $ Escape = NULL ]])

Parameters

  • $key( gemischt ) - Name des zu vergleichenden Feldes oder assoziativen Arrays

  • $value( gemischt ) - Wenn ein einzelner Schlüssel im Vergleich zu diesem Wert

  • $escape( bool ) - Gibt an, ob Werte und Bezeichner maskiert werden sollen

Returns

DB_query_builder-Instanz

Return Type

Objekt

Endlich, das update() Die Funktion aktualisiert die Daten in der Datenbank.

Syntax

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

Parameters

  • $table( Zeichenfolge ) - Tabellenname

  • $set( Array ) - Ein assoziatives Array von Feld / Wert-Paaren

  • $where( string ) - Die WHERE-Klausel

  • $limit( int ) - Die LIMIT-Klausel

Returns

WAHR beim Erfolg, FALSCH beim Scheitern

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

Datensatz löschen

Um einen Datensatz in der Datenbank zu löschen, wird die Funktion delete () wie in der folgenden Tabelle gezeigt verwendet:

Syntax

löschen ([ $ table = '' [, $ where = '' [, $ limit = NULL [, $ reset_data = TRUE ]]])

Parameters

  • $table( gemischt ) - Die Tabelle (n), aus der gelöscht werden soll; Zeichenfolge oder Array

  • $where( string ) - Die WHERE-Klausel

  • $limit( int ) - Die LIMIT-Klausel

  • $reset_data( bool ) - TRUE, um die Abfrage-Schreibklausel zurückzusetzen

Returns

CI_DB_query_builder-Instanz (Methodenverkettung) oder FALSE bei einem Fehler

Return Type

gemischt

Verwenden Sie den folgenden Code, um einen Datensatz in der zu löschen studTabelle. Das erste Argument gibt den Namen der Tabelle an, in der der Datensatz gelöscht werden soll, und das zweite Argument entscheidet, welcher Datensatz gelöscht werden soll.

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

Datensatz auswählen

Um einen Datensatz in der Datenbank auszuwählen, klicken Sie auf get Funktion wird verwendet, wie in der folgenden Tabelle gezeigt -

Syntax

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

Parameters

  • $table( Zeichenfolge ) - Die Tabelle zum Abfragen des Arrays

  • $limit( int ) - Die LIMIT-Klausel

  • $offset( int ) - Die OFFSET-Klausel

Returns

CI_DB_result-Instanz (Methodenverkettung)

Return Type

CI_DB_result

Verwenden Sie den folgenden Code, um alle Datensätze aus der Datenbank abzurufen. Die erste Anweisung ruft alle Datensätze aus der Tabelle "stud" ab und gibt das Objekt zurück, das im $ query-Objekt gespeichert wird. Die zweite Anweisung nennt dieresult() Funktion mit $ query-Objekt, um alle Datensätze als Array abzurufen.

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

Schließen einer Verbindung

Die Datenbankverbindung kann manuell geschlossen werden, indem der folgende Code ausgeführt wird:

$this->db->close();

Beispiel

Erstellen Sie eine Controller-Klasse mit dem Namen Stud_controller.php und speichern Sie es bei application/controller/Stud_controller.php

Hier ist ein vollständiges Beispiel, bei dem alle oben genannten Operationen ausgeführt werden. Erstellen Sie vor dem Ausführen des folgenden Beispiels eine Datenbank und eine Tabelle gemäß den Anweisungen zu Beginn dieses Kapitels und nehmen Sie die erforderlichen Änderungen in der Datenbankkonfigurationsdatei vor, die unter gespeichert istapplication/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); 
      } 
   } 
?>

Erstellen Sie eine Modellklasse mit dem Namen Stud_Model.php und speichern Sie es 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); 
      } 
   } 
?>

Erstellen Sie eine Ansichtsdatei mit dem Namen Stud_add.php und speichern Sie es 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>

Erstellen Sie eine Ansichtsdatei mit dem Namen Stud_edit.php und speichern Sie es 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>

Erstellen Sie eine Ansichtsdatei mit dem Namen Stud_view.php und speichern Sie es 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>

Nehmen Sie die folgende Änderung in der Routendatei unter vor application/config/routes.php und fügen Sie die folgende Zeile am Ende der Datei hinzu.

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

Lassen Sie uns nun dieses Beispiel ausführen, indem Sie die folgende URL im Browser aufrufen. Ersetzen Sie Ihre Website durch Ihre URL.

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