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