2011-11-09 36 views
6

Làm cách nào tôi có thể trả về giá trị 'không tìm thấy dữ liệu' nếu truy vấn của tôi không trả về kết quả nào ???Codeigniter - Thực hiện hành động nếu truy vấn cơ sở dữ liệu không trả lại kết quả

Đây là mã của tôi:

function getTerms($letter) { 


    $this->db->select('term, definition'); 
    $this->db->from('glossary'); 
    $this->db->where(array('letter' => $letter)); 

    $query = $this->db->get(); 

    foreach ($query->result() as $row) { 
     $data[] = array(
      'term' => $row->term, 
      'definition' => $row->definition 
     ); 
    } 

    return $data; 
} 

Nó hiện trả về biến $ data ngay cả khi truy vấn trả về không có kết quả được đem lại cho tôi lỗi php. Làm thế nào tôi có thể kiểm tra rằng có kết quả trước khi trả về mảng dữ liệu $.

Trả lời

3

Nó hiện trả về biến $ data ngay cả khi truy vấn trả về không có kết quả được đem lại cho tôi php lỗi.

Đó là một thói quen tốt để khởi tạo mảng mà bạn có ý định xây dựng:

$data = array(); 
// Loop through possible results, adding to $data 

Nếu không có kết quả bạn sẽ nhận được một mảng trống rỗng trở lại, sau đó kiểm tra rằng trong điều khiển của bạn.

Bằng cách này, ít nhất biến được xác định và bạn sẽ không nhận được thông báo.

13

Đơn giản chỉ cần kiểm tra xem các truy vấn trả về ít nhất một dòng:

if ($query->num_rows() > 0) { 
    // query returned results 
} else { 
    // query returned no results 
} 

Read more in the docs

2

gì về để cung cấp cho giá trị mảng rỗng ban đầu cho $data Chỉ cần đặt

$data = array(); 

trước foreach

1
<?php 

    return is_array($data) ? $data : array(); 
} 
Các vấn đề liên quan