MySQli返回双重结果

时间:2015-12-15 10:21:06

标签: sql mysqli

我使用mySQli和php仍然很新,目前我正在使用简单的mySQli查询

$datas = $mysqli->query("SELECT firstname FROM Customer");
    while($row = mysqli_fetch_array($datas)) {
    print_r($row);
}

然而返回的结果是双倍的,这是正常的吗?

 Array
(
[0] => Vincent
[firstname] => Vincent
)
Array
(
[0] => Carmen
[firstname] => Carmen
)
Array
(
[0] => James
[firstname] => James
)
Array
(
[0] => William
[firstname] => William
)

2 个答案:

答案 0 :(得分:1)

结果不是“双倍”。你从数据库中获得了4条记录,但是print_r打印它们的方式看起来有点类似于' double'。您可以执行以下操作来显示第1列:

print_r($row[0]);

或者这样打印列'名字':

print_r($row['firstname']);

显然是一样的。

<强>更新

如果你想循环遍历所有列,你可以在while循环中执行类似的操作:

$length = count($row);
for ($i = 0; $i < $length; $i++) {
  print $row[$i];
}

答案 1 :(得分:0)

您不会获得两倍的记录数。您获得了相同的数据,但同时获得了关联数组和数值数组。这是因为您使用了mysqli_fetch_array(),默认情况下它返回一个由数字键和SELECT中DB列名称索引的数组。
要获得关联数组的结果,请仅使用以下其中一项:

while ($row = mysqli_fetch_array($datas, MYSQLI_ASSOC)) {
    print_r($row);
}
// or
while ($row = mysqli_fetch_assoc($datas)) {
    print_r($row);
}
// or
foreach ($datas as $row) {
    print_r($row);
}

要获取数值数组形式的结果,请仅使用以下一项:

while ($row = mysqli_fetch_array($datas, MYSQLI_NUM)) {
    print_r($row);
}
// or
while ($row = mysqli_fetch_row($datas)) {
    print_r($row);
}