为什么mysqli_fetch_array()返回数组大小的两倍?

时间:2013-04-13 22:07:23

标签: php mysql mysqli lamp

我正在做一个非常简单的php语句,例如

print_r($my_rec);
$row = mysqli_fetch_array($my_rec);
echo "\nP_Id " . $row['P_Id'] . ' Length ' . sizeof($row) . "\n";
$row = mysqli_fetch_array($my_rec);
echo "\nP_Id " . $row['P_Id'] . ' Length ' . sizeof($row) . "\n";

现在,当print_r打印到屏幕时,它会报告每个数组中只有16个字段/列。这是真的。但是当我获取一个数组时,它给了我两倍的字段。换句话说,阵列正在重复自身,这是没有意义的。示例......

我在我的数据库中

 Col1  Col2
 "hi1" "bye1"

当我这样做时

 $row = mysqli_fetch_array($my_rec);
 foreach($row as $x){
       echo $x . "\n";
 }

会打印

 hi1
 hi1
 by2
 by2

为什么我会出现这种行为?

1 个答案:

答案 0 :(得分:5)

因为它还包含一个填充了列位置的数组(即:0,1,2,3和id,用户名,密码,电子邮件)。 id0都包含相同的数据。

如果您只想要字符串索引,可以使用mysqli_fetch_assochttp://php.net/mysqli_fetch_assoc