20/07/2019, 10:16

[PHP] Hướng dẫn lấy dữ liệu cùng lúc từ câu truy vấn trong Codeigniter

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách lấy dữ liệu từ nhiều câu truy vấn database Codeigniter PHP về giống DataSet trong C#. Trong FrameWorks Codeigniter PHP, có cung cấp cho chúng ta thư viện "database" để làm việc với database ...

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách lấy dữ liệu từ nhiều câu truy vấn database Codeigniter PHP về giống DataSet trong C#.

Trong FrameWorks Codeigniter PHP, có cung cấp cho chúng ta thư viện "database" để làm việc với database qua các câu lệnh truy vấn phổ biến như:

smart-database-driven-routing-in-codeigniter

VD: 

$data = $this->db->query("SELECT * from tbl_sinhvien")->result_array();

Ở câu lệnh này trong Codeigniter sẽ trả về dữ liệu cho chúng ta một array của câu truy vấn này.

Tuy nhiên, nếu chúng ta muốn truy vấn nhiều câu lệnh sql thì Codeginter không có hỗ trợ cho chúng ta.

VD: 

Bây giờ các bạn muốn thực hiện câu lệnh truy vấn sau, để lấy tên sinh viên và lớp học.

câu 1: $this->db->query("select * from tbl_sinhvien")->result_array();

câu 2: $this->db->query("select * from tbl_monhoc")->result_array();

Nếu viết như vậy, chúng ta sẽ phải mất thời gian truy vấn dữ liệu trên server 2 lần.

Dưới đây: Mình sẽ chia sẽ cho các bạn Function dùng để lấy Dataset từ câu nhiều câu truy vấn về 1 lúc.

Function GetMultipleQueryResult()

public function GetMultipleQueryResult($queryString)
{
    $CI =   &get_instance();
    if (empty($queryString)) {
          return false;
      }

    $index     = 0;
    $ResultSet = array();        
    if (mysqli_multi_query($CI->db->conn_id, $queryString)) {
        while (mysqli_more_results($CI->db->conn_id))
         {
           if ($result = mysqli_store_result($CI->db->conn_id)) {
                $ResultSet[$index] = mysqli_fetch_all($result,MYSQLI_ASSOC);                   
                mysqli_free_result($result);
            }
            $index++;

          mysqli_next_result($CI->db->conn_id);

         } 
    }

    return $ResultSet;
}

Và bây giờ các bạn sẽ sử dụng như sau:

$str_sql = "select * from tbl_sinhvien; select * from tbl_monhoc";

$data = $this->GetMultipleQueryResult($sql);

CHÚC CÁC BẠN THÀNH CÔNG!

Tags: codeigniter phpcodeigniter mysql
0