我试图将整个结果集放入一个数组中,如下所示:
while($myres[]=$result->fetch_array(MYSQLI_ASSOC));
这样可以正常但如果我在结果中有5行返回,则数组有6个索引,最后一个为null。所以我的数组似乎总是一个索引太大了。
我可以使用num_rows来循环结果,但这需要我设置我自己的计数器并递增它,我喜欢上面我的行的速记效率,但是如何阻止它用空集填充最后一个索引。
这是我使用fetch_all
的替代方法,我发现需要一个特殊的驱动程序,并非所有的php服务器都已安装。
答案 0 :(得分:1)
我只会使用多行
$myres = array();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$myres[] = $row;
但是,如果你拥有而没有额外的数组赋值行
while ($row = $result->fetch_array(MYSQLI_ASSOC) && $myres[] = $row) {
但这或多或少相同。
答案 1 :(得分:0)
表达式
while($myres[]=$result->fetch_array(MYSQLI_ASSOC));
执行以下操作:
$result->fetch_array(MYSQLI_ASSOC)
$myres[]
,从而将条目附加到$myres
数组$result->fetch_array(MYSQLI_ASSOC)
的结果作为条件传递给while
语句,并确定是否应该退出循环。请注意,在确定是否应退出$myres
循环之前,向while
数组附加一个条目。这是你的额外行来自的地方。
通过经典的方式,你不会失去任何效率:
while ($record = $result->fetch_array(MYSQLI_ASSOC)) {
$myres[] = $record;
}