現在の位置: ホーム> 最新記事一覧> mysql_fetch_arrayとmysql_fetch_rowの違いとアプリケーション

mysql_fetch_arrayとmysql_fetch_rowの違いとアプリケーション

gitbox 2025-06-03

PHPを使用してMySQLデータベースに接続する場合、クエリ結果を取得するには多くの方法があります。 mysql_fetch_arraymysql_fetch_rowは、一般的に使用される2つの関数です。それらはすべて、クエリの結果から一連のデータを取得できますが、返されたデータ構造と適用可能なシナリオは異なります。この記事では、これら2つの機能とそれぞれのアプリケーションシナリオの違いを詳細に説明します。


1。関数の紹介

  • mysql_fetch_array()

    この関数は、結果セットから連想配列、数値インデックスアレイ、または両方を持つ配列として行を取ります。そのデフォルトの動作は、数値インデックスと関連するインデックスを含む配列を返すことです。

    構文例:

     $row = mysql_fetch_array($result, MYSQL_BOTH);
    

    2番目のパラメーターは次のとおりです。

    • mysql_assoc :連想配列のみを返します

    • mysql_num :数値インデックスアレイのみを返します

    • mysql_both (デフォルト):連想インデックスアレイと数値の両方のインデックスアレイを返します

  • mysql_fetch_row()

    この関数は、結果セットから行を取り、数値インデックスアレイとして返します。つまり、結果は数値インデックスを介してのみアクセスでき、フィールド名でアクセスすることはできません。

    構文例:

     $row = mysql_fetch_row($result);
    

2。主な違い

特性mysql_fetch_array mysql_fetch_row
戻り値タイプデフォルトで数値インデックス +関連インデックスを返す配列(オプション)数値インデックスアレイを返します
アクセス方法アクセス可能なフィールド名または数値インデックスデジタルインデックスでのみアクセスします
メモリ消費大きい(返品配列には2つのインデックスが含まれているため)小さい
柔軟性高度、数値インデックスと関連するインデックスが同時に必要なシナリオに適しています低く、デジタルインデックスアクセスにのみ適しています

3。アプリケーションシナリオ分析

mysql_fetch_array

たとえば、フィールドへの柔軟なアクセスが必要なシナリオに適しています。

  • データはフィールド名からアクセスする必要があり、コードはより読みやすいです

  • 数値インデックスとフィールド名インデックスの両方をサポートする必要があります。

  • データの量が読み取られています、メモリの使用要件は高くありません

例:

 $result = mysql_query("SELECT id, name FROM users");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "User ID: " . $row['id'] . ", Name: " . $row['name'] . "<br>";
}

mysql_fetch_row

メモリ要件が厳密に必要であり、次のようなデジタルインデックスによってのみアクセスされるシナリオに適しています。

  • メモリスペースを保存するために、バッチでビッグデータを読みます

  • フィールドデータのみを順番に処理し、フィールド名でアクセスする必要はありません

  • 高性能要件を備えた単純なデータ処理

例:

 $result = mysql_query("SELECT id, name FROM users");
while ($row = mysql_fetch_row($result)) {
    echo "User ID: " . $row[0] . ", Name: " . $row[1] . "<br>";
}

4。概要

関数アドバンテージ欠点
mysql_fetch_array柔軟なアクセス、優れたコードの読みやすさより多くのメモリを取り上げます
mysql_fetch_rowメモリの使用量が少ない、パフォーマンスの向上デジタルインデックスによってのみアクセスされ、コードの読みやすさが不十分です

5。コードサンプルの概要

// 使用 mysql_fetch_array 連想配列を取得します
$result = mysql_query("SELECT id, username FROM users");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "ID: " . $row['id'] . ", Username: " . $row['username'] . "<br>";
}

// 使用 mysql_fetch_row 数値インデックスアレイを取得します
$result = mysql_query("SELECT id, username FROM users");
while ($row = mysql_fetch_row($result)) {
    echo "ID: " . $row[0] . ", Username: " . $row[1] . "<br>";
}

6。注意すべきこと

  • MySQL_*一連の関数は廃止されており、代わりにMySQLIまたはPDO拡張機能を使用することをお勧めします。

  • これらの時代遅れの機能は、コードのセキュリティと保守性を確保するために、新しいプロジェクトで避ける必要があります。