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