我有这个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中解决这些重复的行?
感谢
答案 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_ASSOC
或MYSQLI_NUM
作为第二个参数传递给mysqli_fetch_array
,只获得一种索引类型。
$Result = mysqli_fetch_array($Result, MYSQLI_NUM);