2009-10-19 35 views
9

đây là biến mô tả Tôi đang vang vọng từ bàn của tôi:Làm cách nào để kiểm tra xem mục nhập mysql có trống trong PhP không?

$description = mysql_result($result,$i,"description"); 

đôi khi $ i'th kỷ lục là trống rỗng và không có bất kỳ dữ liệu trong nó/không có mô tả.

Những gì tôi muốn làm là echo "Không có mô tả" cho hồ sơ mà là trống

if (isset($description)){ echo "No description available";} 
else{ echo $desctipion;} 

nỗ lực của tôi không hoạt động mặc dù là nó sau đó lặp lại Không có mô tả cho mỗi kỷ lục ngay cả những người mà aren' t trống.

Câu trả lời là gì?

Trả lời

25

isset($description) sẽ cho kết quả đúng bởi vì $ Mô tả vẫn đang thiết lập, mặc dù giá trị của nó là 'trống'. Những gì bạn cần sử dụng là empty.

if (empty($description)) { 
    echo "No description available"; 
} else { 
    echo $description; 
} 
+0

Hoạt động hoàn hảo, cảm ơn rất nhiều. –

+0

Bạn không bao giờ cần sử dụng Empty! – dynamic

+2

@ 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

0

Sử dụng mysql_affected_rows chức năng:

$qtd = mysql_affected_rows($result); 
+1

Điều đó sẽ không tạo sự khác biệt nếu cột chứa giá trị NULL. –

+0

Xin lỗi, tôi đã đọc sai câu hỏi. Câu trả lời của bạn là chính xác. +1 Đối với bạn :) – Cesar

2

Đ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!

Các vấn đề liên quan