mysqli_statement::num_rows() 返回错误值
题
我正在使用 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();
}
所以是的,预期结果是:
1name
实际结果是:
0name
谁能告诉我这是为什么?
解决方案
我想知道 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;
}
那有什么作用吗?
其他提示
num_rows 不是一个方法,它是一个属性。
您似乎没有声明 $name。
另外,尝试删除bind_result()和fetch(),这样它的内容如下:
$statement->execute();
$statement->store_result();
printf("Number of rows: %d.\n", $statement->num_rows);
不隶属于 StackOverflow