我尝试使用预准备语句计算查询中的返回行。
这样的事情:
$q = "SELECT name, address, contact FROM members";
$stmt = mysqli_prepare ($dbc, $q);
mysqli_stmt_store_result($stmt);
// Get the number of rows returned:
$rows = mysqli_stmt_num_rows($stmt);
echo $rows;
但是在执行此查询时我总是得到0行。我使用mysql客户端ant测试了它,然后我得到了6个返回的行。
谁能告诉我这有什么问题?
谢谢。
答案 0 :(得分:3)
在尝试存储结果之前,您需要调用mysqli_stmt_execute
来实际获取结果集。
$stmt = mysqli_prepare ($dbc, $q);
mysqli_stmt_execute($stmt); // <--------- currently missing!!!
mysqli_stmt_store_result($stmt);
$rows = mysqli_stmt_num_rows($stmt);
答案 1 :(得分:2)
您必须执行查询
$q = "SELECT name, address, contact FROM members";
if ($stmt = mysqli_prepare ($dbc, $q)) {
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
// Get the number of rows returned:
$rows = mysqli_stmt_num_rows($stmt);
echo $rows;
mysqli_stmt_free_result($stmt);
mysqli_stmt_close($stmt);
}
答案 2 :(得分:1)
您需要在语句句柄上调用execute(),现在您只准备查询。
$q = "SELECT name, address, contact FROM members";
$stmt = mysqli_prepare ($dbc, $q);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
// Get the number of rows returned:
$rows = mysqli_stmt_num_rows($stmt);
echo $rows;
答案 3 :(得分:0)
我担心你的桌子成员是否真的有记录。无论如何尝试
$rows = mysqli_num_rows($stmt);
//or
$rows = mysql_num_rows($stmt);
这对我有用,并且已经返回5,因为我的表中只有5条记录。