这个问题在这里已经有答案了:
为什么mysqli num\u行总是返回0(2个答案)
四年前关门了。
我正在将我的站点转换为准备好的语句(之前我只是依赖一个自定义函数,其中包括mysqli\u real\u escape\u string等等),但是当我运行代码时,我总是得到零记录。我知道sql很好,因为我可以在mysql工作台工具中运行sql,它会返回几个记录。这是我的密码:
<?php
$link = new mysqli($server,$dbusername,$dbpassword,$database);
if($link->connect_error){
die($link->connect_error);
}
$sql = "select itemname from items where itemcategory = ?";
//if(!$query = mysqli_query($link, $sql)) die(mysqli_error($link));
if(!$stmt = $link->prepare($sql)) die("Error");
$stmt->bind_param("i", $category); //replace question mark with category id
$stmt->execute();
$stmt->bind_result($itemname);
//$numitems = mysqli_num_rows($query);
$numitems = $stmt->num_rows;
if($numitems>0){
//while($array = mysqli_fetch_array($query)){
while($stmt->fetch()) {
echo $itemname."<br>";
}
}
$stmt->close();
?>
``` `$stmt->num_rows` 始终为0。我做错什么了?
2条答案
按热度按时间blpfk2vs1#
我的问题通过改变来解决
到
nvbavucw2#
这个问题实际上是在php文档中记录的
mysqli_stmt_num_rows
返回结果集中的行数。mysqli \u stmt \u num \u rows()的使用取决于是否使用mysqli \u stmt \u store \u result()来缓冲语句句柄中的整个结果集。因此,由于结果尚未传输到语句句柄,因此无法正确计算行。这就是为什么解决方案像你提到的那样: