我正在使用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)
谁能告诉我为什么会这样?
我想知道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)
那会有什么影响吗?