2013-02-23 41 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。