Lấy dữ liệu từ Database bằng hàm trên CodeIgniter

Truy vấn lấy dữ liệu từ Database được CodeIgniter hỗ trợ rất hiệu quả bằng việc đưa ra các hàm sẵn. Chúng ta chỉ việc sử dụng chúng để có thể lấy dữ liệu tùy theo ý muốn. Việc sử dụng hợp lý các hàm có sẵn này trên CodeIgniter sẽ tiết kiệm rất nhiều công sức chúng ta bỏ ra để phát triển hệ thống của mình

1. Các hàm được CodeIgniter hỗ trợ để lấy dữ liệu từ Database bao gồm:

a. Hàm result().

Hàm này sẽ trả về một mảng các object, hoặc một mảng rỗng nếu truy vấn bị lỗi. Chúng ta thường sử dụng hàm foreach() để lấy từng giá trị của mảng này.

Ví dụ:

$query = $this->db->query("YOUR QUERY");
foreach ($query->result() as $row)
{
   echo $row->title;
   echo $row->name;
   echo $row->body;
}

Đôi khi kết quả trả về là một mảng rỗng, khi đó nếu ta dùng hàm foreach() sẽ xuất hiện lỗi, do hàm foreach() chỉ nhận đầu vào là mảng có giá trị. Do đó bạn nên kiểm tra xem mảng object lấy ra có giá trị hay không.

Ví dụ:

$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0) {
    foreach ($query->result() as $row) 
   { 
          echo $row->title; 
          echo $row->name; 
          echo $row->body;    
    }
}

b. Hàm result_array().

Hàm này trả về một mảng thuần, hoặc một mảng rỗng nếu không có kết quả truy vấn trả về. 

Ví dụ :

$query = $this->db->query("YOUR QUERY");
foreach ($query->result_array() as $row)
{
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}

c. Hàm row().

Hàm này trả về một hàng của một bảng nào đó trong Database. Nếu truy vấn có hơn một hàng kết quả, thì nó chỉ trả về hàng đầu tiên. Kiểu kết quả trả về là một object.

Ví dụ:

$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
   $row = $query->row(); 
   echo $row->title;
   echo $row->name;
   echo $row->body;
}

Nếu các bạn lấy một hàng cụ thể nào đó thì các bạn sẽ cần truyền số thứ tự hàng cần lấy vào hàm này.

Ví dụ:

$row = $query->row(5);

d. Hàm row_array().

Hàm này giống hệt hàm row() ở trên, chỉ khác một chỗ đó là nó trả về một mảng thay vì object.

Ví dụ:

$query = $this->db->query("YOUR QUERY");
if ($query->num_rows() > 0)
{
   $row = $query->row_array(); 
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}

Ngoài ra, bạn có thể lấy các giá trị đứng trước, đứng sau, đứng đầu, đứng cuối bằng các hàm sau đây:

$row = $query->first_row() // Lấy giá trị đứng đầu tiên
$row = $query->last_row() // Lấy giá trị đứng cuối cùng
$row = $query->next_row() // Lấy giá trị đứng kế tiếp
$row = $query->previous_row() // Lấy giá trị đứng liền trước

Theo mặc định các hàm này đều trả về một object, nếu muốn nó trả về một mảng thì các bạn thêm từ 'array'  làm tham số cho hàm này.

Ví du:

$row = $query->first_row('array')
$row = $query->last_row('array')
$row = $query->next_row('array')
$row = $query->previous_row('array')

e. Hàm num_rows().

Hàm này trả về số hàng của một bảng trong DB. Ví dụ:

$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();

f.Hàm free_result().

Hàm này giải phóng bộ nhớ liên kết với kết quả trả về, và xóa đi các ID của kết quả. Bình thường thì PHP sẽ tự động giải phóng bộ nhớ sau mỗi đoạn lệnh thực thi. Tuy vậy, nếu bạn đang chạy nhiều truy vấn ở các đoạn lệnh cụ thể mà bạn muốn giải phóng kết quả ngay sau từng truy vấn này, điều này sẽ làm giảm việc ngốn bộ nhớ đáng kể.

Ví dụ:

$query = $this->db->query('SELECT title FROM my_table');
foreach ($query->result() as $row)
{
   echo $row->title;
}
$query->free_result(); // Kết quả chứa trong $query object sẽ không còn tồn tại nữa.
$query2 = $this->db->query('SELECT name FROM some_table');
$row = $query2->row();
echo $row->name;
$query2->free_result(); // Kết quả chứa trong $query object sẽ không còn tồn tại nữa.

Trên đây là các hàm được CodeIgniter hỗ trợ để lấy giá trị từ DB. Trong bài sau chúng ta sẽ tìm hiểu về các hàm hỗ trợ xử lý truy vấn như xóa dữ liệu, thêm dữ liệu, cập nhật dữ liệu ...

Chúc các bạn thành công :)