Php 是否可以选择所有id';它没有一个while循环

Php 是否可以选择所有id';它没有一个while循环,php,mysql,loops,Php,Mysql,Loops,我不确定是否有答案,但我一直在考虑PHP使用while循环速度不是很快的事实。这让我想到了一个基本函数,它的作用如下: $array = array(); $sItem = DB::cms_query("SELECT id FROM someTable"); while($fItem = $sItem->fetch_assoc() ){ $array[] = $fItem['id']; // store the id in an array } 这将为我提供一个包含所有已找到id

我不确定是否有答案,但我一直在考虑PHP使用while循环速度不是很快的事实。这让我想到了一个基本函数,它的作用如下:

$array = array();
$sItem = DB::cms_query("SELECT id FROM someTable");
while($fItem = $sItem->fetch_assoc() ){
    $array[] = $fItem['id']; // store the id in an array
}
这将为我提供一个包含所有已找到id的数组。我想知道的是:

是否可以在一个查询中选择所有这些id,并且只使用一个获取(因此没有循环来获取),而不创建困难的代码。目标是一段简单的代码来选择所有id

小编辑:我可以将
fetch\u assoc()
替换为
fetch\u row()
,以提高一点,但我希望替换循环

回答一些问题:

我在自己的自定义数据库类中使用了mysqli(我是OO新手,所以我可能会及时改进,但这是另一个故事)

不,mysqli扩展没有提供任何方法来通过单个操作获取所有行,一次只能获取一行。目前唯一提供此功能的PHP API是PDO

但是我想的是,php使用while循环的速度不是很快

您正在获取多少ID,对您来说什么叫“不快”


我认为性能不好的原因很可能不是while循环,而是代码中的一些其他故障…

您使用的是什么数据库API?PDO有
fetchAll()
,它可以一次性获取所有内容。如果使用PDO,这是可能的。它将所有结果提取到一个数组中,您可以使用选择的任何方法循环该数组。至于php在while循环中的速度慢。。定义慢。1ms?在数据库查询中使用GROUP_CONCAT,这样只返回一行包含所有ID,而不是每个ID的一行。。。。但是,与实际查询执行相比,while循环的速度非常快,因此这确实是一个微小的问题-optimisation@Barmar:不,我的。注:不太确定“慢”的定义是什么,这更像是假设,如果你使用mysqli,那么答案是否定的。代码本身并不慢。我正处在一个涵盖了大步的阶段,并开始对代码进行更复杂的理解,以改进小步(当然,在这个过程中还不太早:P)