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 |
|
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() và 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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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