2011-01-25 37 views

Trả lời

17

Bởi vì bạn sẽ có được một ressource mysql khi bạn làm một mysql_query().

Sử dụng thứ gì đó như mysql_fetch_assoc() để nhận hàng tiếp theo. Nó trả về một mảng với các tên cột như các chỉ mục. Trong trường hợp của bạn, nó có thể là COUNT(*).

Dưới đây là cách khắc phục và một số cải tiến nhỏ của đoạn mã của bạn:

$rt = mysql_query("SELECT COUNT(*) FROM persons") or die(mysql_error()); 
$row = mysql_fetch_row($rt); 
if($row) 
    echo "<h1>Number:</h1>" . $row[0]; 

Nếu bạn cần để có được tất cả các hàng của resultset sử dụng đoạn mã này:

while($row = mysql_fetch_assoc($rt)) { 
    var_dump($row); 
} 
1

mysql_query trả về một đối tượng tài nguyên. Bạn cần tìm nạp các hàng từ nó trước tiên (mysql_fetch_row).

1

Trực tiếp từ PHP.net .......

"Đối với SELECT, SHOW, mô tả, giải thích và các tuyên bố khác trở resultset, mysql_query() trả về một tài nguyên trên thành công, hoặc FALSE về lỗi."

1

Từ các tài liệu trên mysql_query:

Đối với SELECT, SHOW, mô tả, giải thích và các tuyên bố khác trở resultset, mysql_query() trả về một tài nguyên trên thành công, hoặc FALSE trên lỗi.

2

mysql_query() không trả lại giá trị, nó trả về tài nguyên (xem here trong hướng dẫn).

Tài nguyên kết quả trả về phải được chuyển đến hàm khác để xử lý bảng kết quả (như mysql_fetch_array() hoặc mysql_fetch_assoc()), để truy cập dữ liệu được trả về.

Ví dụ dựa trên mã ban đầu của bạn:

$rt=mysql_query("SELECT COUNT(*) FROM persons"); 
while($row = mysql_fetch_assoc($rt)) { 
    var_dump($row); 
} 
3

Hãy thử điều này:

$rt=mysql_query("SELECT COUNT(*) FROM persons"); 
echo mysql_error(); 
$count = mysql_result($rt, 0, 0); 
echo $count; 
3

Trong PHP, resources được trả về từ chức năng nhất định để họ có thể được chuyển sang chức năng khác có liên quan. Ví dụ bao gồm kết nối cơ sở dữ liệu, kết quả truy vấn cơ sở dữ liệu, xử lý tệp, v.v.

Theo tài liệu trên mysql_query(), truy vấn SELECT trả về tài nguyên. Bạn có thể lấy tài nguyên đó và chuyển nó tới một số hàm khác nhau.Để truy xuất số lượng hàng, bạn có thể sử dụng mysql_num_rows(), để truy xuất kết quả truy vấn, bạn có thể sử dụng mysql_fetch_array(), mysql_fetch_assoc() hoặc mysql_fetch_object().

Một mô hình bình thường để đối phó với kết quả cơ sở dữ liệu sẽ giống như thế này:

$result = mysql_query("SELECT * FROM persons"); // run query against database 
$count = mysql_num_rows($result); // retrieve a count of the rows in the previous query 
while ($row = mysql_fetch_assoc($result)) { // loop through all the rows in the resultset 
    // use $row['column_name'] to access columns in your resultset 
} 

Từ ví dụ của bạn ở trên:

$result = mysql_query("SELECT COUNT(*) AS num FROM persons"); // run query against db 
$row = mysql_fetch_assoc($result); // retrieve the 1 (and only) row 
$count = $row['num']; // we needed to alias the COUNT(*) column as `num` 
Các vấn đề liên quan