0

我有这个 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 引起的重复行。如何解决 mysqli_fetch_array 中的重复行?

谢谢

4

4 回答 4

6

mysqli_fetch_array()返回 MySQL 结果的关联数组和基于数字的数组。改为使用mysqli_fetch_assoc()

于 2013-04-18T20:42:30.050 回答
2

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

mysqli_fetch_row() [numeric only]
mysqli_fetch_assoc() [keyed only]
or
mysqli_fetch_array($result, $fetch_mode);
于 2013-04-18T20:42:46.870 回答
0

见为mysqli_fetch_assoc。此函数省略了数字索引数组部分。

于 2013-04-18T20:42:24.880 回答
0

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

默认情况下,它使用MYSQLI_BOTH,因此该数组同时具有*数字键和关联键。MYSQLI_ASSOC将或MYSQLI_NUM作为第二个参数传递给以mysqli_fetch_array仅获取一种索引类型。

$Result = mysqli_fetch_array($Result, MYSQLI_NUM);
于 2013-04-18T20:43:43.477 回答