mysqli_fetch_array给我重复的行

时间:2013-04-18 20:40:29

标签: php mysql

我有这个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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

默认情况下,它使用MYSQLI_BOTH,因此数组具有 *数字和关联键。将MYSQLI_ASSOCMYSQLI_NUM作为第二个参数传递给mysqli_fetch_array,只获得一种索引类型。

$Result = mysqli_fetch_array($Result, MYSQLI_NUM);