CodeIgniter - ทำงานกับฐานข้อมูล

เช่นเดียวกับกรอบงานอื่น ๆ เราจำเป็นต้องโต้ตอบกับฐานข้อมูลบ่อยครั้งและ CodeIgniter ทำให้งานนี้ง่ายสำหรับเรา มีชุดฟังก์ชันมากมายในการโต้ตอบกับฐานข้อมูล

ในส่วนนี้เราจะเข้าใจว่าฟังก์ชัน CRUD (สร้างอ่านอัปเดตลบ) ทำงานกับ CodeIgniter อย่างไร เราจะใช้stud ตารางเพื่อเลือกอัปเดตลบและแทรกข้อมูล stud ตาราง.

ชื่อตาราง: แกน
roll_no int (11)
ชื่อ วาร์ชาร์ (30)

การเชื่อมต่อกับฐานข้อมูล

เราสามารถเชื่อมต่อกับฐานข้อมูลได้สองวิธีดังต่อไปนี้ -

  • Automatic Connecting- การเชื่อมต่ออัตโนมัติทำได้โดยใช้ file application / config / autoload.php การเชื่อมต่ออัตโนมัติจะโหลดฐานข้อมูลสำหรับแต่ละหน้า เราต้องเพิ่มไลบรารีฐานข้อมูลดังที่แสดงด้านล่าง -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- หากคุณต้องการการเชื่อมต่อฐานข้อมูลสำหรับบางเพจเราสามารถทำการเชื่อมต่อด้วยตนเองได้ เราสามารถเชื่อมต่อกับฐานข้อมูลด้วยตนเองโดยเพิ่มบรรทัดต่อไปนี้ในคลาสใดก็ได้

$this->load->database();

ที่นี่เราไม่ได้ส่งผ่านอาร์กิวเมนต์ใด ๆ เนื่องจากทุกอย่างถูกตั้งค่าไว้ในแอปพลิเคชันไฟล์ config ฐานข้อมูล / config / database.php

การแทรกบันทึก

ในการแทรกระเบียนในฐานข้อมูลฟังก์ชัน insert () จะถูกใช้ดังแสดงในตารางต่อไปนี้ -

Syntax

แทรก ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]])

Parameters

  • $table( สตริง ) - ชื่อตาราง

  • $set( array ) - อาร์เรย์ที่เชื่อมโยงกันของคู่เขตข้อมูล / ค่า

  • $escape( bool ) - ไม่ว่าจะออกจากค่าและตัวระบุ

Returns

จริงกับความสำเร็จเท็จเมื่อล้มเหลว

Return Type

บูล

ตัวอย่างต่อไปนี้แสดงวิธีการแทรกระเบียนใน studตาราง. $ data คืออาร์เรย์ที่เราได้ตั้งค่าข้อมูลและเพื่อแทรกข้อมูลนี้ลงในตารางstudเราก็ต้องผ่านอาร์เรย์นี้เพื่อฟังก์ชั่นแทรกใน 2 ครั้งที่โต้แย้ง

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

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

การอัปเดตระเบียน

ในการอัปเดตเรกคอร์ดในฐานข้อมูลไฟล์ update() ใช้ฟังก์ชันร่วมกับ set() และ where()ฟังก์ชันดังแสดงในตารางด้านล่าง set() ฟังก์ชันจะตั้งค่าข้อมูลที่จะอัปเดต

Syntax

ชุด ( $ key [, $ value = '' [, $ escape = NULL ]])

Parameters

  • $key( ผสม ) - ชื่อฟิลด์หรืออาร์เรย์ของคู่ฟิลด์ / ค่า

  • $value( string ) - ค่าฟิลด์ถ้าคีย์ $ เป็นฟิลด์เดียว

  • $escape( bool ) - ไม่ว่าจะออกจากค่าและตัวระบุ

Returns

อินสแตนซ์ CI_DB_query_builder (วิธีการเชื่อมโยง)

Return Type

CI_DB_query_builder

where() ฟังก์ชันจะตัดสินใจว่าจะอัปเดตระเบียนใด

Syntax

โดยที่ ( $ key [, $ value = NULL [, $ escape = NULL ]])

Parameters

  • $key( ผสม ) - ชื่อของเขตข้อมูลที่จะเปรียบเทียบหรืออาร์เรย์ที่เชื่อมโยงกัน

  • $value( ผสม ) - หากมีคีย์เดียวเมื่อเทียบกับค่านี้

  • $escape( bool ) - ไม่ว่าจะออกจากค่าและตัวระบุ

Returns

อินสแตนซ์ DB_query_builder

Return Type

วัตถุ

สุดท้าย update() ฟังก์ชันจะอัปเดตข้อมูลในฐานข้อมูล

Syntax

อัพเดต ([ $ table = '' [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]])

Parameters

  • $table( สตริง ) - ชื่อตาราง

  • $set( array ) - อาร์เรย์ที่เชื่อมโยงกันของคู่เขตข้อมูล / ค่า

  • $where( สตริง ) - คำสั่ง WHERE

  • $limit( int ) - ประโยค LIMIT

Returns

จริงกับความสำเร็จเท็จเมื่อล้มเหลว

Return Type

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

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

การลบบันทึก

ในการลบบันทึกในฐานข้อมูลฟังก์ชัน delete () จะถูกใช้ดังแสดงในตารางต่อไปนี้ -

Syntax

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

Parameters

  • $table( ผสม ) - ตารางที่จะลบจาก; สตริงหรืออาร์เรย์

  • $where( สตริง ) - คำสั่ง WHERE

  • $limit( int ) - ประโยค LIMIT

  • $reset_data( bool ) - TRUE เพื่อรีเซ็ตส่วนคำสั่ง "write" ของแบบสอบถาม

Returns

อินสแตนซ์ CI_DB_query_builder (วิธีการเชื่อมโยง) หรือ FALSE เมื่อล้มเหลว

Return Type

ผสม

ใช้รหัสต่อไปนี้เพื่อลบบันทึกในไฟล์ studตาราง. อาร์กิวเมนต์แรกระบุชื่อของตารางที่จะลบบันทึกและอาร์กิวเมนต์ที่สองจะตัดสินใจว่าจะลบระเบียนใด

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

การเลือกบันทึก

ในการเลือกเรกคอร์ดในฐานข้อมูลไฟล์ get ใช้ฟังก์ชันดังแสดงในตารางต่อไปนี้ -

Syntax

รับ ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]])

Parameters

  • $table( string ) - ตารางสำหรับสอบถามอาร์เรย์

  • $limit( int ) - ประโยค LIMIT

  • $offset( int ) - ส่วนคำสั่ง OFFSET

Returns

อินสแตนซ์ CI_DB_result (วิธีการเชื่อมโยง)

Return Type

CI_DB_result

ใช้รหัสต่อไปนี้เพื่อรับบันทึกทั้งหมดจากฐานข้อมูล คำสั่งแรกดึงข้อมูลทั้งหมดจากตาราง "แกน" และส่งคืนวัตถุซึ่งจะถูกเก็บไว้ในวัตถุ $ query คำสั่งที่สองเรียกว่าresult() ฟังก์ชั่นกับ $ query object เพื่อรับระเบียนทั้งหมดเป็นอาร์เรย์

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

การปิดการเชื่อมต่อ

สามารถปิดการเชื่อมต่อฐานข้อมูลได้ด้วยตนเองโดยดำเนินการตามรหัสต่อไปนี้ -

$this->db->close();

ตัวอย่าง

สร้างคลาสคอนโทรลเลอร์ที่เรียกว่า Stud_controller.php และบันทึกไว้ที่ application/controller/Stud_controller.php

นี่คือตัวอย่างที่สมบูรณ์ซึ่งการดำเนินการที่กล่าวถึงข้างต้นทั้งหมดจะดำเนินการ ก่อนดำเนินการตัวอย่างต่อไปนี้ให้สร้างฐานข้อมูลและตารางตามคำแนะนำในตอนต้นของบทนี้และทำการเปลี่ยนแปลงที่จำเป็นในไฟล์กำหนดค่าฐานข้อมูลที่เก็บไว้ที่application/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); 
      } 
   } 
?>

สร้างคลาสโมเดลที่เรียกว่า Stud_Model.php และบันทึกไว้ใน 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); 
      } 
   } 
?>

สร้างไฟล์มุมมองที่เรียกว่า Stud_add.php และบันทึกไว้ใน 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>

สร้างไฟล์มุมมองที่เรียกว่า Stud_edit.php และบันทึกไว้ใน 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>

สร้างไฟล์มุมมองที่เรียกว่า Stud_view.php และบันทึกไว้ใน 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>

ทำการเปลี่ยนแปลงต่อไปนี้ในไฟล์เส้นทางที่ application/config/routes.php และเพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์

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

ตอนนี้ให้เราดำเนินการตัวอย่างนี้โดยไปที่ URL ต่อไปนี้ในเบราว์เซอร์ แทนที่ yoursite.com ด้วย URL ของคุณ

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