MySQli返回两个结果


MySQli returns double results

我对使用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
)

结果不是'double'。您从数据库中返回了4条记录,但print_r打印它们的方式看起来有点像"双"。你可以这样做来显示第1/0列:

print_r($row[0]);

或打印列"名字":

print_r($row['firstname']);

这显然是相同的。

更新

如果你想循环浏览所有的列,你可以在while循环中做这样的事情:

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

您不会得到两倍数量的记录。你得到了相同的数据,但你得到的是关联数组和数值数组。这是因为您使用了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);
}