07/09/2018, 10:38

Fix Lỗi "Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given" trong PHP

Đây là lỗi thường gặp khi mới lập trình web sử dụng hàmmysql_fetch_array(). Chi tiết lỗi như sau: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ... Nguyên Nhân Nguyên nhân của lỗi trên đó là giá trị của đối số truyền vào khi gọi hàm mysql_fetch_array() ...

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ...

Đây là lỗi thường gặp khi mới lập trình web sử dụng hàmmysql_fetch_array(). Chi tiết lỗi như sau:

 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ...

Nguyên Nhân

Nguyên nhân của lỗi trên đó là giá trị của đối số truyền vào khi gọi hàm mysql_fetch_array() thuộc kiểu boolean (TRUE hoặc FALSE) thay vì đúng ra phải là một MySQL resource.

Lấy ví dụ một đoạn code PHP phổ biến có thể sẽ gây ra lỗi trên như sau:

$result = mysql_query('SELECT * FROM posts WHERE title LIKE %database% LIMIT 10');

while($row = mysql_fetch_array($result)) {
    echo $row['title'];
}

Ở đoạn code trên bạn chú ý giá trị trả về của mysql_query() có thể là FALSE trong trường hợp xảy ra lỗi khi truy vấn dữ liệu sử dụng câu SQL query được đưa vào làm đối số của hàm này.

Cách Khắc Phục

Kiểm tra giá trị trả về của hàm mysql_query() trước khi thực hiện việc fetch data sau đó:

$result = mysql_query('SELECT * FROM posts WHERE title LIKE %database% LIMIT 10');

if ($result) {
    while($row = mysql_fetch_array($result)) {
        echo $row['title'];
    }
} else {
    // Code xử lý lỗi
    echo "Xảy ra lỗi khi truy vấn dữ liệu";
}

Lưu ý rằng lỗi xảy ra khi gọi mysql_query() khác với trường hợp không có record nào tồn tại trên bảng của database với sau khi chạy câu query. Trong trường hợp không có bài viết nào chứa từ database trong tiêu đề thì mysql_query() vẫn sẽ trả về một resource nếu như không gặp phải lỗi truy cập dữ liệu trên bảng posts hoặc bất cứ lỗi khác khi chạy câu truy vấn.

0