2013-05-24 38 views
9

Tôi đang tìm hiểu về các câu lệnh đã chuẩn bị và cố gắng làm việc với truy vấn mang lại nhiều hàng kết quả. Ngay bây giờ, tôi chỉ cố gắng tìm ra cách xác định số lượng hàng và sau đó hiển thị số đó trong html.Báo cáo chuẩn bị - Số hàng

tuyên bố chuẩn bị của tôi trông như thế này:

if($stmt = $mysqli -> prepare("SELECT field1, field2, field3 FROM table WHERE id= ?ORDER BY id ASC")) 
    { 
    /* Bind parameters, s - string, b - blob, i - int, etc */ 
    $stmt -> bind_param("i", $id); 
    $stmt -> execute(); 

    /* Bind results */ 
    $stmt -> bind_result($testfield1, $testfield2, $testfield3); 

    /* Fetch the value */ 
    $stmt -> fetch(); 

    /* Close statement */ 
    $stmt -> close(); 
    } 

Tôi hiểu rằng tôi phải đầu tiên lưu các kết quả, sau đó sử dụng num_rows, như thế này:

$stmt->store_result(); 
$stmt->num_rows; 

Tuy nhiên, tôi chạy và phát hành với trang bị lỗi khi tôi đặt mã đó vào đó. Tôi thậm chí không thể đến bước tiếp theo để hiển thị số hàng

Vì vậy, câu hỏi là: Tôi thiếu gì về tính toán số hàng trong câu lệnh đã chuẩn bị, sau đó làm thế nào tôi sẽ hiển thị nó với một số <?php echo '# rows: '.$WHATGOESHERE;?>

Cảm ơn !!

Trả lời

12

num_rows trả về số, bạn phải lưu trữ nó trong một biến.

/*.....other code...*/ 
$numberofrows = $stmt->num_rows; 
/*.....other code...*/ 

echo '# rows: '.$numberofrows; 

đang Vậy đầy đủ nên có một cái gì đó như thế này:

if($stmt = $mysqli -> prepare("SELECT field1, field2, field3 FROM table WHERE id= ? ORDER BY id ASC")) 
    { 
    /* Bind parameters, s - string, b - blob, i - int, etc */ 
    $stmt -> bind_param("i", $id); 
    $stmt -> execute(); 

    /* Bind results */ 
    $stmt -> bind_result($testfield1, $testfield2, $testfield3); 

    /* Fetch the value */ 
    $stmt -> fetch(); 
    $numberofrows = $stmt->num_rows; 

    /* Close statement */ 
    $stmt -> close(); 
    } 
echo '# rows: '.$numberofrows; 
+0

đâu nó đi trong báo cáo chuẩn bị tôi đã đăng? Sau khi thực thi()? Sau khi bind_result, hoặc lấy? Nó có quan trọng không? – Kevin

+0

@Kevin Tôi không tin như vậy. Chỉ cần chắc chắn rằng nó đi sau khi thực hiện và nó sẽ là tốt –

+0

Oh và bằng cách bạn quên một không gian giữa '?' Và 'ORDER BY'. Tôi sẽ cập nhật câu trả lời của mình để sửa lỗi –

-2

Kiểm tra ví dụ # 2 ở đây: PHP.net

Sử dụng PDO :: query() để ra một tuyên bố với các vị từ tương tự như câu lệnh SELECT dự định của bạn SELECT COUNT (*), sau đó sử dụng PDOStatement: : fetchColumn() để lấy số hàng sẽ được trả về. Sau đó, ứng dụng của bạn có thể thực hiện hành động chính xác.

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