CodeIgniter - Làm việc với Cơ sở dữ liệu

Giống như bất kỳ khuôn khổ nào khác, chúng ta cần phải tương tác với cơ sở dữ liệu rất thường xuyên và CodeIgniter làm cho công việc này trở nên dễ dàng với chúng ta. Nó cung cấp bộ chức năng phong phú để tương tác với cơ sở dữ liệu.

Trong phần này, chúng ta sẽ hiểu cách hoạt động của các hàm CRUD (Tạo, Đọc, Cập nhật, Xóa) với CodeIgniter. Chúng tôi sẽ sử dụngstud bảng để chọn, cập nhật, xóa và chèn dữ liệu vào stud bàn.

Tên bảng: stud
roll_no int (11)
Tên varchar (30)

Kết nối với cơ sở dữ liệu

Chúng ta có thể kết nối với cơ sở dữ liệu theo hai cách sau:

  • Automatic Connecting- Kết nối tự động có thể được thực hiện bằng cách sử dụng tệp ứng dụng / config / autoload.php. Kết nối tự động sẽ tải cơ sở dữ liệu cho mỗi và mọi trang. Chúng ta chỉ cần thêm thư viện cơ sở dữ liệu như hình dưới đây -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Nếu bạn chỉ muốn kết nối cơ sở dữ liệu cho một số trang, thì chúng ta có thể kết nối thủ công. Chúng ta có thể kết nối với cơ sở dữ liệu theo cách thủ công bằng cách thêm dòng sau vào bất kỳ lớp nào.

$this->load->database();

Ở đây, chúng tôi không chuyển bất kỳ đối số nào vì mọi thứ được đặt trong tệp cấu hình cơ sở dữ liệu application / config / database.php

Chèn Bản ghi

Để chèn một bản ghi vào cơ sở dữ liệu, hàm insert () được sử dụng như được hiển thị trong bảng sau:

Syntax

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

Parameters

  • $table( string ) - Tên bảng

  • $set( mảng ) - Một mảng kết hợp của các cặp trường / giá trị

  • $escape( bool ) - Có thoát các giá trị và số nhận dạng không

Returns

ĐÚNG về thành công, SAI về thất bại

Return Type

bool

Ví dụ sau đây cho thấy cách chèn một bản ghi vào studbàn. Dữ liệu $ là một mảng trong đó chúng tôi đã thiết lập dữ liệu và để chèn dữ liệu này vào bảngstud, chúng ta chỉ cần truyền mảng này cho hàm insert trong đối số thứ 2 .

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

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

Cập nhật bản ghi

Để cập nhật bản ghi trong cơ sở dữ liệu, update() chức năng được sử dụng cùng với set()where()các chức năng như trong bảng dưới đây. Cácset() chức năng sẽ thiết lập dữ liệu được cập nhật.

Syntax

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

Parameters

  • $key( hỗn hợp ) - Tên trường hoặc một mảng các cặp trường / giá trị

  • $value( string ) - Giá trị trường, nếu $ key là một trường đơn lẻ

  • $escape( bool ) - Có thoát các giá trị và số nhận dạng không

Returns

Cá thể CI_DB_query_builder (chuỗi phương thức)

Return Type

CI_DB_query_builder

Các where() chức năng sẽ quyết định bản ghi nào cần cập nhật.

Syntax

trong đó ( $ key [, $ value = NULL [, $ Escape = NULL ]])

Parameters

  • $key( hỗn hợp ) - Tên trường để so sánh hoặc mảng kết hợp

  • $value( hỗn hợp ) - Nếu một khóa duy nhất, so với giá trị này

  • $escape( bool ) - Có thoát các giá trị và số nhận dạng không

Returns

Phiên bản DB_query_builder

Return Type

vật

cuối cùng update() chức năng sẽ cập nhật dữ liệu trong cơ sở dữ liệu.

Syntax

cập nhật ([ $ table = '' [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]])

Parameters

  • $table( string ) - Tên bảng

  • $set( mảng ) - Một mảng kết hợp của các cặp trường / giá trị

  • $where( string ) - Mệnh đề WHERE

  • $limit( int ) - Mệnh đề LIMIT

Returns

ĐÚNG về thành công, SAI về thất bại

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

Xóa bản ghi

Để xóa bản ghi trong cơ sở dữ liệu, hàm delete () được sử dụng như được hiển thị trong bảng sau:

Syntax

xóa ([ $ table = '' [, $ where = '' [, $ limit = NULL [, $ reset_data = TRUE ]]]])

Parameters

  • $table( hỗn hợp ) - (Các) bảng cần xóa; chuỗi hoặc mảng

  • $where( string ) - Mệnh đề WHERE

  • $limit( int ) - Mệnh đề LIMIT

  • $reset_data( bool ) - ĐÚNG để đặt lại mệnh đề "ghi" truy vấn

Returns

Phiên bản CI_DB_query_builder (chuỗi phương thức) hoặc FALSE khi bị lỗi

Return Type

Trộn

Sử dụng mã sau để xóa bản ghi trong studbàn. Đối số đầu tiên cho biết tên của bảng để xóa bản ghi và đối số thứ hai quyết định bản ghi nào cần xóa.

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

Chọn bản ghi

Để chọn một bản ghi trong cơ sở dữ liệu, get được sử dụng, như thể hiện trong bảng sau:

Syntax

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

Parameters

  • $table( string ) - Bảng truy vấn mảng

  • $limit( int ) - Mệnh đề LIMIT

  • $offset( int ) - Mệnh đề OFFSET

Returns

Cá thể CI_DB_result (chuỗi phương thức)

Return Type

CI_DB_result

Sử dụng mã sau để lấy tất cả các bản ghi từ cơ sở dữ liệu. Câu lệnh đầu tiên tìm nạp tất cả các bản ghi từ bảng "stud" và trả về đối tượng, đối tượng này sẽ được lưu trữ trong đối tượng $ query. Câu lệnh thứ hai gọiresult() hàm với đối tượng truy vấn $ để lấy tất cả các bản ghi dưới dạng mảng.

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

Đóng kết nối

Kết nối cơ sở dữ liệu có thể được đóng theo cách thủ công, bằng cách thực hiện mã sau:

$this->db->close();

Thí dụ

Tạo một lớp điều khiển được gọi là Stud_controller.php và lưu nó tại application/controller/Stud_controller.php

Đây là một ví dụ đầy đủ, trong đó tất cả các thao tác nêu trên đều được thực hiện. Trước khi thực hiện ví dụ sau, hãy tạo cơ sở dữ liệu và bảng như hướng dẫn ở đầu chương này và thực hiện các thay đổi cần thiết trong tệp cấu hình cơ sở dữ liệu được lưu trữ tạiapplication/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); 
      } 
   } 
?>

Tạo một lớp mô hình được gọi là Stud_Model.php và lưu nó vào 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); 
      } 
   } 
?>

Tạo một tệp dạng xem có tên Stud_add.php và lưu nó vào 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>

Tạo một tệp dạng xem có tên Stud_edit.php và lưu nó vào 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>

Tạo một tệp dạng xem có tên Stud_view.php và lưu nó vào 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>

Thực hiện thay đổi sau đây trong tệp tuyến đường tại application/config/routes.php và thêm dòng sau vào cuối tệp.

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

Bây giờ, hãy để chúng tôi thực thi ví dụ này bằng cách truy cập URL sau trong trình duyệt. Thay thế trang web của bạn bằng URL của bạn.

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