【发布时间】:2013-06-07 22:14:00
【问题描述】:
我正在通过 mysqli 准备好的语句从数据库中获取多行。这是在一个单独的函数中发生的,它应该返回一个数组,而数组的每个键都将保存一个 assoc。具有一个 DB 行的数组。有道理,对吧?
所以我到了这一点:
mysqli_stmt_bind_result($stmt,$row['employee_ID'],$row['name'],...);
$returnedarray = array();
while (mysqli_stmt_fetch($stmt))
{
$returnedarray[] = $row;
}
期待我将每一行都推入返回的数组中。
但是一旦数组被返回 - 如果结果集中有 5 行,它将保持最后一行 5 次...
所以我尝试了这个:
$counter = 1;
while (mysqli_stmt_fetch($stmt))
{
echo '<br><b>GOING '. $counter++ .'</b><br>';
echo '<br>ROW: ';
print_r($row);
echo '<br>';
$returnedarray[] = $row;
echo '<br>RETURNED ARRAY: ';
print_r($returnedarray);
}
而回显的内容看起来有点像这样:
去 1
行:数组([employee_ID] => 2 [name] => 罗伯特 ...)
返回数组:数组 ( [0] => 数组 ( [employee_ID] => 2 [name] => 罗伯特...))
去 2
行:数组 Array ([employee_ID] => 3 [name] => john ...)
返回数组:数组 ( [0] => 数组 ( [employee_ID] => 3 [name] => john ... ) [1] => 数组 ([employee_ID] => 3 [name] => john ...) )
因此,即使 $row 每次都包含我想要的内容,并且我将它作为新索引推送到数组中,它实际上会用 $row 覆盖所有现有索引/索引。
为什么不保留现有索引?
【问题讨论】: