0

所以我有这个

$countsql = <<<SQL
SELECT COUNT(*)
FROM `deathnote`
SQL;

if ($stmt = mysqli_prepare($db, $countsql)) {
/* execute query */
mysqli_stmt_execute($stmt);
/* store result */
mysqli_stmt_store_result($stmt);
printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));
}

其输出为 1。现在,当我进入服务器上的 PHP 管理员并运行完全相同的查询时,我收到了 12 的预期结果。

任何人都可以看到我哪里出错了,或者建议怎么做?多谢你们!

4

4 回答 4

1
$res = mysqli_query($db, "SELECT COUNT(*) FROM deathnote");
$row = mysqli_fetch_row($res)
echo "Number of rows: $row[0]\n";
于 2013-11-04T06:39:41.943 回答
0

你在这里使用 sql count 函数非常错误,基本上它是一个聚合函数,当你使用 printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt)); 如果你想要你想要的结果,你说是 12,那么你可以使用 mysqli_result, mysqli_fetch_array 即

于 2013-11-04T06:47:36.910 回答
0

您需要的是 COUNT(*) 的值,而不是行数——行数始终为一:单行,一列,包含 COUNT(*) 的值。

于 2013-11-04T06:33:00.127 回答
0

要么使用要么使用mysqli_stmt_num_rows不要COUNT(*)混合使用。

With mysqli_stmt_num_rowsQuery 应该是

SELECT *
FROM `deathnote`;


或者

建议使用这种方式以获得更好的性能和更快的代码执行COUNT(*)

$res = mysqli_query("SELECT COUNT(*) FROM deathnote");
$row = mysqli_fetch_array($res)
echo $row[0];
于 2013-11-04T06:32:00.800 回答