0

我不确定是否有答案,但我在考虑 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 的数组。我想知道的是:

是否可以在 1 个查询中选择所有这些 id 并仅使用一次提取(因此无需循环提取),而不会创建困难的代码。目标是选择所有 id 的一段简单代码。

小编辑:我可以用替换fetch_assoc()fetch_row()改进一点,但我正在寻找替换循环

回答一些问题:
我正在使用mysqli,在我自己的自定义数据库类中(我是 OO 的新手,所以我可能会及时改进,但那是另一个故事)

4

2 回答 2

1

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

于 2013-10-28T16:23:32.487 回答
0

但我在考虑这样一个事实,即 php 使用 while 循环不是很快

您要获取多少 id 以及对您来说所谓的“不快”?

我认为性能不佳的原因很可能不是while循环,而是您的代码存在其他一些故障......

于 2013-10-28T16:28:24.353 回答