我正在使用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; }
那会有什么影响吗?