我有一个PHP页面,从MySQL表返回数据。我决定添加一个功能,允许用户设置他们想要显示的结果的数量,例如,如果有数千条记录。
下面是显示数据的PHP代码:while ($row = mysql_fetch_array($result) && ($row <= $noOfResults)) {
echo '<p class="display-date">' . $row['date'] . '</p><p class="display">' . $row['id'] . ' - ' . base64_decode( $row['packetdata']) . '</p>';
echo '<hr align="center" width="100%" />';
echo $noOfResults;
}
我希望这将只显示到用户选择的点的数据。因此,如果用户选择10个结果,则将$noOfResults设置为10,并且它将只从数据库中获取前10个结果。然而,这目前只显示一个"-"和$noOfResults变量(这在这一点上是需要的)。是我的语法错了,还是这不是解决这种问题的正确方法?
谢谢,让它与LIMIT一起工作,甚至没有想到要这样做。
谁能解释一下为什么这个被否决了,只是想学习,以便将来写更好的问题,谢谢。
从数据库中获取有限数据的最好方法是在查询中使用LIMIT语句。我假设你的查询是
$result= "SELECT * FROM `mytable`";
在
中添加limit语句$result= "SELECT * FROM `mytable` LIMIT '$noOfResults'";
则while循环将是
while ($row = mysql_fetch_array($result) ) {
echo '<p class="display-date">' . $row['date'] . '</p><p class="display">' . $row['id'] . ' - ' . base64_decode( $row['packetdata']) . '</p>';
echo '<hr align="center" width="100%" />';
echo $noOfResults;
}
你做错了$row
将是一个数组。因此,为了纠正这一点,使用mysql_num_rows()
函数在php检查行数。试试下面的代码:
if(mysql_num_rows($result)<=$noOfResults){
while ($row = mysql_fetch_array($result) ) {
echo '<p class="display-date">' . $row['date'] . '</p><p class="display">' . $row['id'] . ' - ' . base64_decode( $row['packetdata']) . '</p>';
echo '<hr align="center" width="100%" />';
echo $noOfResults;
}
}
希望这对你有帮助