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

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

谢谢你。

4

4 回答 4

4

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);
于 2013-02-23T14:14:55.633 回答
3

您必须执行查询

 $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);
 }
于 2013-02-23T14:16:44.680 回答
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;
于 2013-02-23T14:16:48.343 回答
0

我担心您的表 Members 中是否确实有记录。无论如何尝试

$rows = mysqli_num_rows($stmt);

//or

$rows = mysql_num_rows($stmt);

这对我来说已经解决了,并且返回了 5,因为我的表中只有 5 条记录。

于 2014-05-17T17:38:24.020 回答