我正在使用while循环来显示sql表中的数据,并将列表项中每行的数据分组。我需要在从sql表中显示50行后停止循环。如果它有用,$ id是唯一的并且对于每一行。
<?php
include("db.php");
$query="SELECT * FROM `stories`";
$result=mysqli_query($connection,$query);
?>
<li>
<?php
while ($data = mysqli_fetch_assoc($result)):
$id = $data['id'];
$img_link = $data['img_link'];
$page_path = $data['page_path'];
$tag_alt = $data['tag_alt'];
$category = $data['category'];
if(is_null($page_path)){$page_path = "#";}
?>
<img alt="<?php echo $tag_alt; ?>" src="<?php echo $img_link; ?>" width="200" height="200">
<h3><a href="#"><?php echo $title; ?></a></h3>
<a href="categories/<?php echo $category; ?>.html"><label> </label><?php echo $category; ?></a></span>
<p><?php echo $tag_alt; ?></p>
</li>
<?php
endwhile;
mysqli_close($connection);
?>
答案 0 :(得分:3)
第一个选项是你可以像这样使用LIMIT 50
$query="SELECT * FROM `stories` LIMIT 50";
第二个是如果你不想使用LIMIT 50
,你可以保持一个计数器变量 <?php
$counter = 0;
while ($data = mysqli_fetch_assoc($result))
{
$counter+=1;
$id = $data['id'];
$img_link = $data['img_link'];
if($counter>50)
{
break;
}
答案 1 :(得分:2)
在查询中,您可以这样给出。
(如果是sqlserver):
$query="SELECT TOP 50 * FROM `stories`";
(如果是Mysql或postgre):
$query="SELECT * FROM `stories` LIMIT 50 ";
如果你想在下一页显示结果51到100,你应该将页码或计数器传递给一个页面,以及你应该稍微更改你的sql。
答案 2 :(得分:1)
这是你的解决方案吗?
$i=1;
while ($data = mysqli_fetch_assoc($result) && $i <= 50):
{
//Code Here
$i++;
}
答案 3 :(得分:1)
理想的方法应该是使用50限制进行查询
$query="SELECT * FROM `stories` LIMIT 50 ";
但是如果出于某种原因你需要在同一页面中使用你的数组并且你只想在这种情况下显示前50个,你可以做类似的事情:
while ($data = mysqli_fetch_assoc($result)){
$array[]=$data;
}
for($i=0;$i<=49;$i++){
$id = $array[$i]['id'];
//etc...
}
答案 4 :(得分:1)
感谢大家的帮助。使用LIMIT函数似乎效果最好。我添加了BETWEEN和RAND来改进功能。
<?php include("db.php"); $query="SELECT * FROM `stories` WHERE id BETWEEN 1 AND 200 order by RAND() LIMIT 20"; $result=mysqli_query($connection,$query); ?
再次感谢您,没有什么能比StackOverflow上的优秀服务更胜一筹
答案 5 :(得分:0)
$query="SELECT * FROM `stories`";
替换为
$query="SELECT * FROM `stories` LIMIT 50 ";