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 |
|
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 |
|
Returns |
อินสแตนซ์ CI_DB_query_builder (วิธีการเชื่อมโยง) |
Return Type |
CI_DB_query_builder |
where() ฟังก์ชันจะตัดสินใจว่าจะอัปเดตระเบียนใด
Syntax |
โดยที่ ( $ key [, $ value = NULL [, $ escape = NULL ]]) |
Parameters |
|
Returns |
อินสแตนซ์ DB_query_builder |
Return Type |
วัตถุ |
สุดท้าย update() ฟังก์ชันจะอัปเดตข้อมูลในฐานข้อมูล
Syntax |
อัพเดต ([ $ table = '' [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]]) |
Parameters |
|
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 |
|
Returns |
อินสแตนซ์ CI_DB_query_builder (วิธีการเชื่อมโยง) หรือ FALSE เมื่อล้มเหลว |
Return Type |
ผสม |
ใช้รหัสต่อไปนี้เพื่อลบบันทึกในไฟล์ studตาราง. อาร์กิวเมนต์แรกระบุชื่อของตารางที่จะลบบันทึกและอาร์กิวเมนต์ที่สองจะตัดสินใจว่าจะลบระเบียนใด
$this->db->delete("stud", "roll_no = 1");
การเลือกบันทึก
ในการเลือกเรกคอร์ดในฐานข้อมูลไฟล์ get ใช้ฟังก์ชันดังแสดงในตารางต่อไปนี้ -
Syntax |
รับ ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]]) |
Parameters |
|
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