繁体   English   中英

mysqli_stmt_num_rows()返回0行

[英]mysqli_stmt_num_rows() returns 0 rows

我试图使用准备好的语句计算查询返回的行数。

像这样的东西:

$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条返回的行。

谁能告诉我这是怎么回事?

谢谢。

在尝试存储结果之前,需要调用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);

您必须执行查询

 $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);
 }

您需要在语句句柄上调用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;

我担心您的表成员是否实际有记录。 无论如何尝试

$rows = mysqli_num_rows($stmt);

//or

$rows = mysql_num_rows($stmt);

这对我来说很有效,并且由于我的表中只有5条记录而返回了5条。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM