mysql_fetch_array を使用すると重複した値が取得されるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-02 05:01:30
オリジナル
798 人が閲覧しました

Why Do I Get Duplicate Values When Using mysql_fetch_array?

mysql_fetch_array によって返される配列内の重複した値

質問:

mysql_fetch_array を使用して MySQL テーブルからデータをフェッチする場合、double値が返されるため、配列を反復処理すると出力が重複します。

例:

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

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

foreach($table as $table_var)
{
    echo "<td>" . $table_var . "</td>";
} 
// Output:
// "1 1 1 1 jordan jordan 9108121544 9108121544  testEmail testEmail testAddress testAddress testCounty  testCounty"</code>
ログイン後にコピー

なぜこれが起こるのですか?

mysql_fetch_array 関数は、デフォルトで連想インデックスと数値インデックスの両方を含む配列を返します。これは、列名と列インデックス (0、1、2 など) の両方がキーとして使用されることを意味します。

解決策:

値の重複を防ぐには、mysql_fetch_array の 2 番目のパラメータを使用して、必要なインデックス作成のタイプを指定します。数値インデックスのみ、連想インデックスのみ、またはその両方を選択できます。

<code class="php">// Numerical indexes only
$query_result_array = mysql_fetch_array($query_result, MYSQL_NUM); 

// Associative indexes only
$query_result_array = mysql_fetch_array($query_result, MYSQL_ASSOC); </code>
ログイン後にコピー

あるいは、mysql_fetch_row 関数と mysql_fetch_assoc 関数を使用して、それぞれ数値インデックスまたは連想インデックスのみを使用してデータをフェッチすることもできます。

<code class="php">// Numerical indexes only
$query_result_array = mysql_fetch_row($query_result); 

// Associative indexes only
$query_result_array = mysql_fetch_assoc($query_result); </code>
ログイン後にコピー

以上がmysql_fetch_array を使用すると重複した値が取得されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート