Điều đó tùy thuộc vào ý bạn.
mysql_result trả về FALSE
về lỗi, điều này sẽ xảy ra nếu bạn chỉ định không hợp lệ (hàng, trường). Để kiểm tra điều này, bạn muốn sử dụng toán tử giống hệt nhau ===
, kiểm tra cả giá trị và loại. Toán tử bình đẳng ==
, hàm empty()
và đánh giá có điều kiện của câu lệnh if đều kiểm tra giá trị nhưng không phải là loại.
Điều này có nghĩa là việc sử dụng một trong các phương pháp đó không có sự khác biệt giữa các giá trị khác nhau tương đương với Boolean FALSE
, như chuỗi rỗng, mảng trống, chuỗi '0'
và giá trị NULL
.
Vì vậy, nếu bạn muốn được thực sự thấu đáo về nó, bạn có thể làm điều gì đó như sau:
if ($description === FALSE) {
throw new Exception("The row $i was out of range in query $query.");
} else if ($description === NULL) {
// assuming that the description field has a default value of NULL
// * this one I'm not sure about.. the documentation for mysql_result claims
// that it returns a string, so this may never happen.
// It's left as an exercise for the reader.
throw new Exception("Uninitialized value in result row $i of db query $query");
} else if ($description === '') {
echo "No description available";
} else {
echo $description;
}
Kể từ empty()
lợi nhuận true
dưới một bộ tương tự như các điều kiện để một bình đẳng (==
) với FALSE
, hơn này nghiêm ngặt trong việc kiểm tra loại của bạn sẽ đặc biệt quan trọng trong trường hợp kết quả thực sự có thể là "0"
.
Rõ ràng tôi không được phép đăng nhiều hơn một siêu liên kết, vì vậy tôi không thể liên kết đến tài liệu cho toán tử so sánh ("http://php.net/manual/en/language.operators.comparison.php") hoặc chức năng trống ("http://php.net/empty"). May mắn thay an ninh của họ là tương đối lỏng lẻo. Mwuh Hah!
Hoạt động hoàn hảo, cảm ơn rất nhiều. –
Bạn không bao giờ cần sử dụng Empty! – dynamic
@ yes123: bạn có thể giải thích về điều này không? Bạn không CẦN nó trên mọi tài khoản, nhưng tại sao không sử dụng nó? – Sk8erPeter