Hướng dẫn dùng codeigniter escape trong PHP

Trong bài này mình sẽ hướng dẫn cho các bạn các thao tác với cơ sở dữ liệu trong CodeIgniter. Các thao tác cơ bản của CRUD gồm Create, Read, Update và Delete.

Cũng như những framework khác, chúng ta cũng cần thao tác với cơ sở dữ liệu trong codeigniter thường xuyên vì vậy CI có những thư viện giúp chúng ta thao tác dễ dàng hơn. Mình sẽ tạo một bảng Hoc_Sinh trong MySQL để ví dụ minh họa cho bài viết này gồm 2 cột như sau:

  • MaHocSinh int[11] primary_key
  • HoVaTen varchar[50]

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

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

  • Kết nối tự động bằng cách cấu hình trong file application/config/autoload.php. Kết nối tự động sẽ kết nối cơ sở dữ liệu cho tất cả các trang. Chúng ta chỉ cần thêm thư viện database như sau:
    $autoload['libraries'] = array['database'];
  • Kết nối bằng tay khi chúng ta chỉ muốn thực hiện kết nối cơ sở dữ liệu trong một vài trang. Chúng ta có thể thực hiện kết nối trong controller bằng cách như sau:
    $this->load->database[];

Thêm dữ liệu vào bảng

Chúng ta sẽ sử dụng hàm insert[] để thêm dữ liệu vào một bảng nào đó. Cú pháp của hàm insert[] như sau:

insert[$table = '', $set = NULL, $escape = NULL]

Trong đó:

  • $table [string] là tên bảng.
  • $set [array] là mảng kết hợp chứa dữ liệu.
  • $escape [bool] dùng để xác định dữ liệu có được escape không.

Hàm insert[] trả về giá trị TRUEhoặc FALSEtương ứng với thao tác thêm dữ liệu có thực hiện thành công hay không. Các bạn xem ví dụ sau đây:

$data = array[ 
   'MaHocSinh' => 1, 
   'HoTen' => 'Nguyen Khanh Duy'
]; 

$this->db->insert["Hoc_Sinh", $data];

Cập nhật dữ liệu

Để cập nhật dữ liệu trong cơ sở dữ liệu, hàm update[] được sử dụng cùng với hàm set[] và hàm where[]. Hàm set[] dùng để đặt dữ liệu sẽ được cập nhật với cú pháp như sau:

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

Trong đó:

  • $key [mixed] là tên cột hoặc một mảng kết hợp gồm tên cột/giá trị [field/value].
  • $value [string] là giá trị của cột nếu $key là tên một cột.
  • $escape [bool] xác định giá trị có được escape không.

Hàm where[] có cú pháp như sau:

where[$key[, $value = NULL[, $escape = NULL]]]

Trong đó:

  • $key [mixed] là tên cột để so sánh hoặc một mảng kết hợp.
  • $value [mixed] nếu chỉ có một khóa thì so sánh với giá trị này.
  • $escape [bool] xác định giá trị có được escape không.

Hàm update[] có cú pháp như sau:

update[[$table = ''[, $set = NULL[, $where = NULL[, $limit = NULL]]]]]

Trong đó:

  • $table [string] là tên bảng cần cập nhật dữ liệu.
  • $set [array] một mảng kết hợp.
  • $where [string] là mệnh đề WHERE trong câu SQL.
  • $limit [int] là mệnh đề LIMIT trong câu SQL.

Hàm update[]trả về giá trị TRUEhoặc FALSEtương ứng thao tác thực hiện thành công hay không. Ví dụ sau đây:

$data = array[ 
   'MaHocSinh' => 1, 
   'HoTen' => 'Nguyen Duy' 
]; 

$this->db->set[$data]; 
$this->db->where["MaHocSinh", 1]; 
$this->db->update["Hoc_Sinh", $data];

Ví dụ trên đây sẽ cập nhật lại dòng dữ liệu có MaHocSinh = 1 và sẽ cập nhật lại họ tên là Nguyen Duy.

Xóa dữ liệu

Để xóa dữ liệu trong cơ sở dữ liệu, hàm delete[] được sử dụng. Hàm delete[] có cú pháp như sau:

delete[[$table = ''[, $where = ''[, $limit = NULL[, $reset_data = TRUE]]]]]

Trong đó:

  • $table [mixed] là một [hoặc nhiều] bảng sẽ xóa dữ liệu.
  • $where [string] là mệnh đề WHERE
  • $limit [int] là mệnh đề LIMIT
  • $reset_data [bool] bằng TRUE để reset mệnh đề “write” trong query.

Ví dụ như sau:

$this->db->delete["Hoc_Sinh", "MaHocSinh = 1"];

Lấy dữ liệu – Select

Để lấy dữ liệu trong cơ sở dữ liệu, hàm get[] được sử dụng. Hàm get[] có cú pháp như sau:

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

Trong đó:

  • $table [string] là tên bảng
  • $limit [int] là mệnh đề LIMIT
  • $offset [int] là mệnh đề OFFSET

Để lấy dữ liệu ra chúng ta thực hiện 2 bước, đầu tiên là thực hiện lệnh get[] để lấy các dữ liệu ra và lưu thành đối tượng $query. Sau đó gọi hàm result[] để lấy tất cả các dữ liệu trong đối tượng $query và lưu vào mảng.

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

Các bạn có thể xem thêm phần reference của CI tại đây

Chủ Đề