2

我有以下代码用于回显意外的列数,现在我希望它计算行数,因为我已经更改了它,它没有回显任何内容。有任何想法吗?顺便说一句,我已经连接到数据库,即使它没有显示。

<p>
<?php
$result = mysqli_query("SELECT * FROM User_info");
$num_rows = mysqli_num_rows($result);
echo $num_rows[0];

mysqli_close($con);
?>
 records in our database start your search <a href="#">here</a> today. 
</p>
4

4 回答 4

7

作为一般规则,您应该尽量减少数据库服务器和应用程序服务器之间的流量。

对于您的具体情况,这意味着推荐的“计数”方式是:

<?php
$result = mysqli_query("SELECT count(*) FROM User_info");
$row = mysqli_fetch_row($result);
$num = $row[0];
?>

使用该请求 ( SELECT COUNT(*) ...),数据库服务器将为您计算行数。并且只返回那个总数——可能使用索引或内部数据结构直接返回结果。使用SELECT *,服务器必须检索然后发送表中的所有数据。相当昂贵且效率低下,因为之后您不会在应用程序中使用所有这些数据......


编辑——如果你想要一个“简单”的解释:知道一本书的页数最有效的是什么?一个一个地数,还是看页脚的页码?

使用您的初始解决方案(用 PHP 计数),这就像制作一本书的复印机,然后计算副本中的页数。随着COUNT(*)您让数据库服务器使用页码甚至索引(本书的“TOC”)来查找结果。

于 2013-08-08T10:27:15.200 回答
4

这是计算行数的唯一正确方法:

<?php
$result = mysqli_query("SELECT count(*) FROM User_info");
$row = mysqli_fetch_row($result);
$num = $row[0];
?>
<p>
<?=$num?> records in our database start your search <a href="#">here</a> today. 
</p>
于 2013-08-08T09:29:21.183 回答
2

mysqli_num_rows() 将其结果返回为整数(如果值对于整数来说太大,则返回字符串),而不是数组,因此您需要将代码从以下位置更改:

echo $num_rows[0];

echo $num_rows;
于 2013-08-08T09:31:45.550 回答
0

将那一行更改为

echo $num_rows;
于 2013-08-08T09:28:07.403 回答