mysqli_fetch_array 在输出中给我重复的字段

问题描述 投票:0回答:4

我有这个 SQL 命令:

SELECT Username FROM Family WHERE Parent = '$Username' LIMIT 10

当我在 PHPMyAdmin 上运行该命令并替换一些有效值而不是

$Username
时,我得到以下结果:

+----------+
| Username |
+----------+
| johndoe  |
+----------+

但是当我编写这样的函数时:

function userParent($Username)
{
  global $con;
  $Result = mysqli_query($con, "SELECT Username FROM Family WHERE Parent = '$Username' LIMIT 10");
  $Result = mysqli_fetch_array($Result);
  return $Result;   
}

我得到这个数组作为回报:

Array ( [0] => johndoe [Username] => johndoe ) 

因此,当我使用这样的 foreach 循环在脚本中调用该函数时:

$Parent = userParent('james');

foreach ($Parent as $value){
  echo $value . '<br>';
}

输出中总是有重复的“johndoe”。

我相信这个重复数据是由

mysqli_fetch_array
引起的。如何从输出中删除这些重复数据?

php mysql mysqli
4个回答
5
投票

mysqli_fetch_array()
返回 MySQL 结果的关联数组和基于数字的数组。请使用
mysqli_fetch_assoc()
来代替。


2
投票

这不是骗局,它记录在http://php.net/mysqli_fetch_array。默认情况下,该函数返回一个双键数组(数字+字符串)。如果您只想要一种类型,请使用特定的

mysqli_fetch_row() [numeric only]
mysqli_fetch_assoc() [keyed only]
or
mysqli_fetch_array($result, $fetch_mode);

0
投票

参见

mysqli_fetch_assoc
。该函数省略了数字索引数组部分。


0
投票

检查文档:http://php.net/manual/en/mysqli-result.fetch-array.php,它返回了它应该返回的内容。

默认情况下,它使用

MYSQLI_BOTH
,因此数组具有 both* 数字键和关联键。 将
MYSQLI_ASSOC
MYSQLI_NUM
作为第二个参数传递给
mysqli_fetch_array
以仅获取一种索引类型。

$Result = mysqli_fetch_array($Result, MYSQLI_NUM);
© www.soinside.com 2019 - 2024. All rights reserved.