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