CodeIgniter - Bekerja dengan Database

Seperti kerangka kerja lainnya, kita perlu berinteraksi dengan database sangat sering dan CodeIgniter memudahkan pekerjaan ini bagi kita. Ini menyediakan serangkaian fungsi yang kaya untuk berinteraksi dengan database.

Di bagian ini, kita akan memahami bagaimana fungsi CRUD (Buat, Baca, Perbarui, Hapus) bekerja dengan CodeIgniter. Kami akan menggunakanstud tabel untuk memilih, memperbarui, menghapus, dan memasukkan data stud meja.

Nama Tabel: stud
roll_no int (11)
nama varchar (30)

Menghubungkan ke Database

Kita dapat terhubung ke database dengan dua cara berikut -

  • Automatic Connecting- Koneksi otomatis dapat dilakukan dengan menggunakan file application / config / autoload.php. Koneksi otomatis akan memuat database untuk setiap halaman. Kami hanya perlu menambahkan perpustakaan database seperti yang ditunjukkan di bawah ini -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Jika Anda menginginkan konektivitas database hanya untuk beberapa halaman, maka kita dapat menggunakan koneksi manual. Kita dapat terhubung ke database secara manual dengan menambahkan baris berikut di kelas manapun.

$this->load->database();

Di sini, kami tidak memberikan argumen apa pun karena semuanya telah diatur dalam file konfigurasi database application / config / database.php

Memasukkan Record

Untuk memasukkan record ke database, fungsi insert () digunakan seperti yang ditunjukkan pada tabel berikut -

Syntax

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

Parameters

  • $table( string ) - Nama tabel

  • $set( array ) - Array asosiatif pasangan bidang / nilai

  • $escape( bool ) - Apakah akan meng-escape nilai dan pengenal

Returns

BENAR pada kesuksesan, SALAH pada kegagalan

Return Type

bool

Contoh berikut menunjukkan cara menyisipkan record studmeja. $ Data adalah array di mana kita telah mengatur data dan memasukkan data ini ke tabelstud, Kita hanya perlu melewati array ini untuk fungsi insert dalam 2 nd argumen.

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

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

Memperbarui Record

Untuk memperbarui record dalam database, file update() fungsi digunakan bersama set() dan where()fungsi seperti yang ditunjukkan pada tabel di bawah ini. Ituset() fungsi akan mengatur data yang akan diperbarui.

Syntax

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

Parameters

  • $key( campuran ) - Nama bidang, atau larik pasangan bidang / nilai

  • $value( string ) - Nilai bidang, jika $ key adalah satu bidang

  • $escape( bool ) - Apakah akan meng-escape nilai dan pengenal

Returns

CI_DB_query_builder instance (metode rantai)

Return Type

CI_DB_query_builder

Itu where() fungsi akan memutuskan rekaman mana yang akan diperbarui.

Syntax

di mana ( $ key [, $ value = NULL [, $ escape = NULL ]])

Parameters

  • $key( campuran ) - Nama bidang yang akan dibandingkan, atau larik asosiatif

  • $value( campuran ) - Jika satu kunci, dibandingkan dengan nilai ini

  • $escape( bool ) - Apakah akan meng-escape nilai dan pengenal

Returns

Instance DB_query_builder

Return Type

obyek

Terakhir, file update() fungsi akan mengupdate data di database.

Syntax

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

Parameters

  • $table( string ) - Nama tabel

  • $set( array ) - Array asosiatif pasangan bidang / nilai

  • $where( string ) - Klausa WHERE

  • $limit( int ) - Klausa LIMIT

Returns

BENAR pada kesuksesan, SALAH pada kegagalan

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

Menghapus Record

Untuk menghapus record dalam database, fungsi delete () digunakan seperti yang ditunjukkan pada tabel berikut -

Syntax

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

Parameters

  • $table( campuran ) - Tabel yang akan dihapus; string atau larik

  • $where( string ) - Klausa WHERE

  • $limit( int ) - Klausa LIMIT

  • $reset_data( bool ) - TRUE untuk menyetel ulang klausa "tulis" kueri

Returns

CI_DB_query_builder instance (method chaining) atau FALSE pada kegagalan

Return Type

Campuran

Gunakan kode berikut untuk menghapus record di studmeja. Argumen pertama menunjukkan nama tabel untuk menghapus record dan argumen kedua memutuskan record mana yang akan dihapus.

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

Memilih Record

Untuk memilih record dalam database, file get fungsi digunakan, seperti yang ditunjukkan pada tabel berikut -

Syntax

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

Parameters

  • $table( string ) - Tabel untuk query array

  • $limit( int ) - Klausa LIMIT

  • $offset( int ) - Klausul OFFSET

Returns

Instance CI_DB_result (rangkaian metode)

Return Type

CI_DB_result

Gunakan kode berikut untuk mendapatkan semua catatan dari database. Pernyataan pertama mengambil semua record dari tabel "stud" dan mengembalikan objek, yang akan disimpan di $ query object. Pernyataan kedua menyebutresult() berfungsi dengan objek $ query untuk mendapatkan semua record sebagai array.

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

Menutup Koneksi

Koneksi database dapat ditutup secara manual, dengan menjalankan kode berikut -

$this->db->close();

Contoh

Buat kelas pengontrol bernama Stud_controller.php dan simpan di application/controller/Stud_controller.php

Berikut adalah contoh lengkap, di mana semua operasi yang disebutkan di atas dilakukan. Sebelum menjalankan contoh berikut, buat database dan tabel seperti yang diinstruksikan di awal bab ini dan buat perubahan yang diperlukan dalam file konfigurasi database yang disimpan diapplication/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); 
      } 
   } 
?>

Buat kelas model bernama Stud_Model.php dan simpan di 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); 
      } 
   } 
?>

Buat file tampilan bernama Stud_add.php dan simpan di 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>

Buat file tampilan bernama Stud_edit.php dan simpan di 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>

Buat file tampilan bernama Stud_view.php dan simpan di 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>

Lakukan perubahan berikut pada file rute di application/config/routes.php dan tambahkan baris berikut di akhir 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';

Sekarang, mari kita jalankan contoh ini dengan mengunjungi URL berikut di browser. Ganti yoursite.com dengan URL Anda.

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