PHP使用for循环遍历MySQLi记录集

PHP使用for循环遍历MySQLi记录集,php,database,for-loop,mysqli,recordset,Php,Database,For Loop,Mysqli,Recordset,每当我使用PHP MySQLi记录集时,我总是使用标准的while循环遍历记录集来处理返回的数据。然而,最近我开始怀疑是否有一种方法可以使用for循环。这在需要限制返回结果数量的情况下非常方便 下面是使用while循环的示例: //Prepare a query that will produce a reverse-order recordset $sql = "SELECT * FROM tblNames ORDER BY numberID DESC"; $recordset = $con

每当我使用PHP MySQLi记录集时,我总是使用标准的
while
循环遍历记录集来处理返回的数据。然而,最近我开始怀疑是否有一种方法可以使用
for
循环。这在需要限制返回结果数量的情况下非常方便


下面是使用
while
循环的示例:

//Prepare a query that will produce a reverse-order recordset
$sql = "SELECT * FROM tblNames ORDER BY numberID DESC";
$recordset = $conn -> query($sql);

//Count the number of contacts added to the list
$contactCount = 0;

while($row = $recordset -> fetch_assoc())
{   
    //If the list has reached its maximum number (5), end the display loop
    if($contactCount >= 5)
    {
        break;
    }

    $contactList .= $row["name"] . "<br>";

    //Increment the number of contacts added to the list
    $contactCount ++;
}

//Use '$contactList' somewhere....
echo($contactList);
//准备一个将生成逆序记录集的查询
$sql=“按编号从TBL名称订单中选择*”;
$recordset=$conn->query($sql);
//统计添加到列表中的联系人数
$contactCount=0;
而($row=$recordset->fetch_assoc())
{   
//如果列表已达到最大值(5),则结束显示循环
如果($contactCount>=5)
{
打破
}
$contactList.=$row[“name”]。“
”; //增加添加到列表中的联系人数 $contactCount++; } //在某处使用“$contactList”。。。。 echo($contactList);


虽然这确实有效,但必须有更好的方法在指定的迭代次数后结束循环。在这种情况下,使用
for
循环是否更容易?如果是,怎么做?

当我写这个问题时,我突然决定最后一次尝试,但方式与以前不同。我一直在寻找一种高效/安全的方法来判断记录集何时为空(当自定义最大数大于记录数时,以及当没有记录时,遇到了问题)


//执行SQL查询(逆序),并将结果存储在记录集中
$sql=“按编号从TBL名称订单中选择*”;
$recordset=$conn->query($sql);
//使用“for”循环迭代记录集
对于($i=0;$i<15;$i++)
{ 
//如果记录集中还有一行,请将列值添加到列表中
如果($row=$recordset->fetch_assoc())
{
$contactList.=$row[“name”]。“
”; } 其他的 { //当没有更多记录时从循环中断(如果 //给定的最大数量实际上大于记录的数量) 打破 } } echo($contactList);
据我所知,这是一种更好的方法,可以循环浏览一组/自定义数量的记录,然后停止。它还将安全地捕获记录集的结尾(假设它在截止数字之前到达),并结束循环


编辑


正如上面HenryTK在回答中指出的,如果您可以控制查询,最好的方法是使用
LIMIT
SQL语句。但是,如果您只访问记录集,我仍然认为
for
循环将节省时间。(虽然我不确定何时会发生这种情况)。

您可以在查询中使用
LIMIT
。例如:

SELECT * FROM tblNames ORDER BY numberID DESC LIMIT 15

这样,如果查询返回的结果少于15个,您就不必担心会发生什么。

哇!我早该想到的!在意识到我可以用MySQLi实现之前,我花了一段时间研究如何在PHP中反转数组。我不知道为什么我不想调查这件事!谢谢
SELECT * FROM tblNames ORDER BY numberID DESC LIMIT 15