mysqli_statement :: num_rows()返回错误的值

Ste*_*ley 0 php mysql mysqli

我正在使用mysqli类和预处理语句在PHP中编写数据库处理程序类.我试图打印出结果.它不起作用,所以我决定做一些调试.我尝试使用该类中的num_rows()方法mysqli_statement,但它一直返回0.我决定编写一小部分测试代码以使其更简单,以便我可以看到出了什么问题.然后我能够返回我想要的数据,但num_rows()即使实际选择和检索某些数据,该方法仍然返回0.这是代码:

$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if(mysqli_connect_errno())
{
  die('connection failed');
}

$statement = $mysqli->stmt_init();

$query = "SELECT name FROM table WHERE id = '2000'";
if($statement->prepare($query))
{
    $statement->execute();
    $statement->bind_result($name);
    $statement->fetch();
    $statement->store_result();
    echo $statement->num_rows();
    echo $name; 
}
else
{
    echo 'prepare statement failed';
    exit();
}
Run Code Online (Sandbox Code Playgroud)

所以是的,预期的结果是:

1name
Run Code Online (Sandbox Code Playgroud)

实际结果是:

0name
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么会这样?

Nat*_*ong 5

我想知道num_rows()是否相对于当前结果集进行报告.尝试在获取数据之前捕获num_rows().例如

if($statement->prepare($query))
{
    $statement->execute();
    $statement->store_result();
    echo $statement->num_rows();
    $statement->bind_result($name);
    $statement->fetch();
    echo $name; 
}
Run Code Online (Sandbox Code Playgroud)

那会有什么影响吗?