ホームページ >データベース >mysql チュートリアル >MySQLi が配列をフェッチすると出力が 2 倍になるのはなぜですか?

MySQLi が配列をフェッチすると出力が 2 倍になるのはなぜですか?

DDD
DDDオリジナル
2024-10-29 05:35:311060ブラウズ

Why Does My MySQLi Fetch Array Result in Doubled Output?

配列内の二重の結果 (MySQLi フェッチ配列)

問題

次のコードを実行すると、

<code class="php">$table = get_personel_table(1);

function get_personel_table($id) {
    global $connection;
    $query = "SELECT * FROM employees WHERE id=$id ORDER BY id ASC";
    $query_result = mysqli_query($connection, $query);
    confirm_query($query_result);
    $query_result_array = mysqli_fetch_array($query_result);
    return $query_result_array; // returns associative array!
}

foreach($table as $table_var) {
    echo "<td>$table_var</td>";
}</code>

の結果が発生します

1 1   1   1   jordan  jordan  9108121544  9108121544  testEmail   testEmail   testAddress testAddress testCounty  testCounty

Solution

mysqli_fetch_array のデフォルトの動作は、結果行の連想インデックスと数値インデックスの両方を返すことです。これは、特定の状況では望ましくありません。返されるキーを制限するには、関数の 2 番目のパラメーターを使用できます:

<code class="php">$query_result_array = mysqli_fetch_array($query_result, MYSQLI_NUM); // numeric keys only
$query_result_array = mysqli_fetch_array($query_result, MYSQLI_ASSOC); // associative keys only</code>

または、次の関数を使用できます:

<code class="php">$query_result_array = mysqli_fetch_row($query_result); // numeric keys only
$query_result_array = mysqli_fetch_assoc($query_result); // associative keys only</code>

数値キーまたは連想キーのみを使用するを使用すると、出力内のデータの重複を排除できます。

以上がMySQLi が配列をフェッチすると出力が 2 倍になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。