PHP使用for循环遍历MySQLi记录集
每当我使用PHP 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
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