2013-02-23 111 views
0

我試圖使用預處理語句對來自查詢的返回行進行計數。mysqli_stmt_num_rows()返回0行

事情是這樣的:

$q = "SELECT name, address, contact FROM members"; 

    $stmt = mysqli_prepare ($dbc, $q); 

    mysqli_stmt_store_result($stmt); 
    // Get the number of rows returned: 
    $rows = mysqli_stmt_num_rows($stmt); 

    echo $rows; 

但執行此查詢時,總是我得到0行。我測試了它使用MySQL客戶端螞蟻,然後我得到6返回的行。

誰能告訴我這是什麼問題?

謝謝。

回答

3

在嘗試存儲結果之前,您需要調用mysqli_stmt_execute實際獲取結果集。

$stmt = mysqli_prepare ($dbc, $q); 
mysqli_stmt_execute($stmt); // <--------- currently missing!!! 
mysqli_stmt_store_result($stmt); 
$rows = mysqli_stmt_num_rows($stmt); 
2

你必須執行查詢

$q = "SELECT name, address, contact FROM members"; 

if ($stmt = mysqli_prepare ($dbc, $q)) { 

mysqli_stmt_execute($stmt); 

mysqli_stmt_store_result($stmt); 
// Get the number of rows returned: 
$rows = mysqli_stmt_num_rows($stmt); 

echo $rows; 

mysqli_stmt_free_result($stmt); 

mysqli_stmt_close($stmt); 
} 
1

你需要調用execute()在你的語句句柄,現在你只准備查詢。

$q = "SELECT name, address, contact FROM members"; 

    $stmt = mysqli_prepare ($dbc, $q); 

    mysqli_stmt_execute($stmt); 

    mysqli_stmt_store_result($stmt); 
    // Get the number of rows returned: 
    $rows = mysqli_stmt_num_rows($stmt); 

    echo $rows; 
0

我很擔心你的表成員是否確實有它的記錄。反正嘗試

$rows = mysqli_num_rows($stmt); 

//or 

$rows = mysql_num_rows($stmt); 

這對我來說已經解決了,因爲我的表中只有5條記錄而返回了5。