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 に記載されています。デフォルトでは、関数はデュアルキー配列 (数値 + 文字列) を返します。1つのタイプだけが必要な場合は、特定のタイプを使用してください

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を 2 番目のパラメーターとして渡して、 mysqli_fetch_array1 つのインデックス タイプのみを取得します。

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