我在mysql数据库表中有5行数据。我想随机显示这五行,所以我使用ORDER BY rand()函数,但是问题是我想在获取2行后停止while循环,并在其中添加一些html,然后从第3行继续。这可能吗?
这是我尝试的代码,但是此代码的问题是我得到2行重复90%的时间...
<?php
$query = "SELECT * FROM table ORDER BY rand() LIMIT 2";
$result = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($result)){
//display till 2 rows
?>
<!-- add some html block -->
<?php
$query = "SELECT * FROM table ORDER BY rand()";
$result = mysqli_query($connection,$query);
mysqli_data_seek($result,2);
while($row = mysqli_fetch_assoc($result)){
//display from row 3 now till last row
?>
答案 0 :(得分:4)
为什么不只使用一个查询和一个循环?
$query = "SELECT * FROM table ORDER BY rand()";
$result = mysqli_query($connection,$query);
$i = 0;
while($row = mysqli_fetch_assoc($result)){
if($i == 2) {
?>
<!-- add some html block -->
<?php
}
//display row data
$i++;
}
如果其他if
语句是< 3
或> 2
等,则可以添加其他语句来显示行。
答案 1 :(得分:1)
您可以在一个while循环本身(一个查询)中实现它。使用一个计数器,当计数器达到2时,插入一个html块,然后一会儿继续。
$query = "SELECT * FROM table ORDER BY rand()";
$result = mysqli_query($connection,$query);
$r = 0;
while($row = mysqli_fetch_assoc($result)){
// your row display code here above the next block
if (++$r == 2) {
// now when r is 2, inject that one-time html block
}
}