2008-10-18 41 views

Trả lời

14

Bạn có thể sử dụng để kiểm tra xem mysql_num_rows($results) 0 hàng bị trả lại, hoặc sử dụng này thay thế nhanh hơn:

$query = "SELECT COUNT(*) AS total FROM table"; 
$results = mysql_query($query, $connection); 
$values = mysql_fetch_assoc($results); 
$num_rows = $values['total']; 
+2

Nếu bạn muốn * lấy dữ liệu từ bảng, nhưng chỉ muốn biết liệu nó có trống không để bạn có thể nói như vậy trên trang kết quả, sau đó thực hiện truy vấn thông thường của bạn và sử dụng mysql_num_rows. Những gì bạn không muốn làm là: đếm các hàng (sử dụng ở trên), sau đó làm các truy vấn bình thường nếu đếm> 0. –

+2

Vâng, tôi đã không nghĩ về điều đó bởi vì tôi thường làm "SELECT COUNT (*) "truy vấn để tính số lượng trang nội dung, sau đó chọn chỉ một vài hàng từ bảng tùy thuộc vào trang nội dung mà người dùng đang truy cập. –

+1

'mysql_query' và' mysql_fetch_assoc' mở rộng không được chấp nhận như của PHP 5.5.0, và sẽ bị xóa trong tương lai. Thay vào đó, nên sử dụng phần mở rộng MySQLi hoặc PDO_MySQL. http://www.php.net/manual/en/mysqli-result.fetch-assoc.php –

-6

Nếu bạn lặp qua các kết quả, bạn có thể có một bộ đếm và kiểm tra xem.

$x = 1; 
$query = mysql_query("SELECT * FROM table"); 
while($row = mysql_fetch_assoc($query)) 
{ 
    $x++; 
} 
if($x == 1) 
{ 
    //No rows 
} 
+0

Hàng có chứa một chuỗi rỗng sẽ phá vỡ mã đó. – Schwern

+0

không có. mảng ("") == đúng. Đây vẫn là một cách rất ngớ ngẩn để kiểm tra nó mặc dù. – nickf

+0

rất cpu chuyên sâu. – TCB13

28

Câu trả lời của Jeremy Ruten ở trên rất tốt và thực thi nhanh; mặt khác, nó chỉ cung cấp cho bạn số hàng và không có gì khác (nếu bạn muốn dữ liệu kết quả, bạn phải truy vấn lại cơ sở dữ liệu). Những gì tôi sử dụng:

// only ask for the columns that interest you (SELECT * can slow down the query) 
$query = "SELECT some_column, some_other_column, yet_another_column FROM `table`"; 
$results = mysql_query($query, $connection); 
$numResults = mysql_num_rows($results); 
if ($numResults > 0) { 
    // there are some results, retrieve them normally (e.g. with mysql_fetch_assoc()) 
} else { 
    // no data from query, react accordingly 
} 
8

Hoặc bạn có thể chỉ cần kiểm tra xem kết quả của mysql_fetch_assoc có sai không.

$query = "SELECT * FROM `table`"; 
$results = mysql_query($query, $connection); 
$Row = mysql_fetch_assoc($results); 
if ($Row == false) 
{ 
    $Msg = 'Table is empty'; 
} 
+1

Theo tôi, câu trả lời hay nhất vì tất cả những gì cần làm là kiểm tra xem mysql_fetch_assoc của truy vấn có tạo ra thứ gì đó không phải là null hay không –

0

Có một điều tôi nhận thấy là truy vấn có thể không thành công, vì vậy bạn cần kiểm tra xem biến số kết quả $ đã được đặt chưa. Tôi sẽ sử dụng câu trả lời được đưa ra bởi yjerem làm ví dụ.

$query = "SELECT COUNT(*) AS total FROM table"; 
$results = mysql_query($query, $connection); 
if ($results) { // or use isset($results) 
$values = mysql_fetch_assoc($results); 
$num_rows = $values['total']; 
} 
Các vấn đề liên quan