mysqli_stmt_num_rows()返回0行

时间:2013-02-23 14:12:23

标签: php

我尝试使用预准备语句计算查询中的返回行。

这样的事情:

$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客户端ant测试了它,然后我得到了6个返回的行。

谁能告诉我这有什么问题?

谢谢。

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);
 }

答案 2 :(得分: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;

答案 3 :(得分:0)

我担心你的桌子成员是否真的有记录。无论如何尝试

$rows = mysqli_num_rows($stmt);

//or

$rows = mysql_num_rows($stmt);

这对我有用,并且已经返回5,因为我的表中只有5条记录。