現在の位置: ホーム> 最新記事一覧> mysqli_resultを横断するための正しいポーズ

mysqli_resultを横断するための正しいポーズ

M66 2025-05-28

データベース操作にPHPを使用する場合、 MySQLI拡張機能は、データベースを接続、クエリ、および操作するための非常に便利な機能を提供します。 mysqli_resultは、クエリが実行されたときに返される結果セットオブジェクトです。この記事では、クエリの結果を効率的に取得して処理できるように、 mysqli_result関数によって返されたすべての結果を正しく横断する方法を紹介します。

1.データベースに接続します

まず、 mysqli_connect()関数を介してデータベースに接続する必要があります。ここで、基本的なMySQLデータベース操作エクスペリエンスが既にあると仮定します。以下は簡単なデータベース接続例です。

 <?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// 接続を作成します
$conn = new mysqli($servername, $username, $password, $dbname);

// 接続を確認してください
if ($conn->connect_error) {
    die("接続に失敗しました: " . $conn->connect_error);
}
?>

2。クエリを実行します

データベースに接続した後、 mysqli_query()を介してSQLクエリを実行できます。ユーザーという名前のテーブルをクエリし、すべてのユーザーに関する情報を取得するとします。

 $sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);

この時点で、 $ resultは、クエリのすべてのデータを含むmysqli_resultオブジェクトになります。

3. mysqli_fetch_assoc()を使用して結果を横断します

mysqli_resultによって返される結果セットをトラバースする最も一般的な方法は、mysqli_fetch_assoc()関数を使用することです。この関数は連想配列を返し、それが呼ばれるたびにデータの行を返し、データがなくなるまで次の行にポインターを移動します。

 if ($result->num_rows > 0) {
    // 各行の出力データ
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 結果";
}

この例では、 mysqli_fetch_assoc()は、配列のキーがフィールド名であり、値が対応するフィールドの値である連想配列を返します。

4. mysqli_fetch_row()を使用して結果を横断します

mysqli_fetch_assoc()に加えて、 mysqli_fetch_row()を使用してインデックス配列を返すこともできます。また、データの各行のフィールド値は配列に順番に保存されます。この方法を使用する場合、インデックスを介して各フィールドの値にアクセスする必要があります。

 if ($result->num_rows > 0) {
    // 各行の出力データ
    while($row = $result->fetch_row()) {
        echo "id: " . $row[0] . " - Name: " . $row[1] . " - Email: " . $row[2] . "<br>";
    }
} else {
    echo "0 結果";
}

ここでmysqli_fetch_row()数値インデックスアレイを返し、 $ row [0]はIDフィールドに対応し、 $ row [1]名前$ row [2]電子メールです。

5。mysqli_fetch_object ()を使用して、結果をトラバースします

オブジェクトを使用してクエリの結果を処理する方法に慣れている場合は、 mysqli_fetch_object()を使用できます。オブジェクトを返し、各フィールドにオブジェクトプロパティを介してアクセスできます。

 if ($result->num_rows > 0) {
    // 各行の出力データ
    while($row = $result->fetch_object()) {
        echo "id: " . $row->id . " - Name: " . $row->name . " - Email: " . $row->email . "<br>";
    }
} else {
    echo "0 結果";
}

6.すべての結果を横断する別の方法

処理中にすべての行のデータをより柔軟に操作する必要がある場合は、すべての結果を含む2次元配列を返すMySQLI_FETCH_ALL()関数を使用できます。

 $allResults = $result->fetch_all(MYSQLI_ASSOC);

foreach ($allResults as $row) {
    echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}

ここで、fetch_all(mysqli_assoc)は、すべての結果を連想配列として返します。

7.接続を閉じます

操作が完了したら、データベース接続を閉じることを忘れないでください。

 $conn->close();

要約します

上記の方法を通して、 mysqli_result関数によって返されたすべての結果を繰り返すことができます。使用する方法は、個々のニーズとデータの処理方法によって異なります。配列を関連付けてフィールドを取得する場合は、 mysqli_fetch_assoc()を使用できます。オブジェクト指向の場合は、 mysqli_fetch_object()を選択できます。データのすべての行を同時に処理する必要がある場合は、 mysqli_fetch_all()を使用できます。

データベース接続操作の後、リソースのリリースを確保するために、接続を時間内に閉じてください。