PHP计数行数

时间:2013-08-08 09:26:59

标签: php mysql web mysqli

我有以下代码用于回显事故的列数,我希望它现在计算行,因为我已经改变它而不回显任何东西。有任何想法吗?顺便说一下,即使没有显示,我已经连接到数据库。

<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 个答案:

答案 0 :(得分:7)

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

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

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

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


编辑 - 如果你想要一个“简单”的解释:知道书中页数最有效率是什么?要逐个计算它们,还是查看页脚中的页码?

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

答案 1 :(得分:3)

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

<?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>

答案 2 :(得分:2)

mysqli_num_rows()以整数形式返回结果(如果整数值太大,则返回字符串),而不是数组,因此需要更改代码:

echo $num_rows[0];

echo $num_rows;

答案 3 :(得分:0)

将一行更改为

echo $num_rows;
相关问题