在阅读了大量的主题,教程和其他内容之后-我想在这里发布信息,希望有人能为我提供帮助。我尝试了所有可能得到的建议,但仍然没有用。
这是我的代码:
$prep_stmt = "SELECT id, DATE_FORMAT(added,'%d.%M'), title FROM offers ORDER BY added DESC LIMIT ?, ?;"; $stmt = $mysqli->prepare($prep_stmt); $stmt->bind_param ('ii',$lowlimit, $page); $stmt->execute(); $stmt->bind_result($id, $added, $title); while ($stmt->fetch()) { ... # some random output here } $count = $stmt->num_rows; echo "c -> ". $count;exit;
我总是得到“ c-> 0”……但是已经有输出了……所以我在做什么错呢?:/
您需要store_result()在访问num_rows属性之前调用该方法。
store_result()
num_rows
来自对PHP手册文档的评论:
如果不使用mysqli_stmt_store_result(),并在执行准备好的语句后立即调用此函数,则该函数通常将返回0,因为它无法知道结果集中有多少行,因为结果集尚未保存在内存中。 mysqli_stmt_store_result() 将结果集保存在内存中,因此您可以在执行语句并保存结果集后立即使用此功能。
如果不使用mysqli_stmt_store_result(),并在执行准备好的语句后立即调用此函数,则该函数通常将返回0,因为它无法知道结果集中有多少行,因为结果集尚未保存在内存中。
mysqli_stmt_store_result()
mysqli_stmt_store_result() 将结果集保存在内存中,因此您可以在执行语句并保存结果集后立即使用此功能。
您的代码应如下所示:
$stmt->execute(); $stmt->store_result(); $stmt->bind_result($id, $added, $title); while ($stmt->fetch()) { # some random output here... } $count = $stmt->num_rows;