現在の位置: ホーム> 最新記事一覧> mysqli_resultを使用してクエリを正しく通過する方法をwhile and fetch_assoc()と組み合わせますか?

mysqli_resultを使用してクエリを正しく通過する方法をwhile and fetch_assoc()と組み合わせますか?

M66 2025-06-03

MySQL拡張機能は、MySQLデータベース操作にPHPを使用する際に最も一般的に使用されるツールの1つです。特に、クエリを処理する場合、 mysqli_resultオブジェクト、 fetch_assoc()メソッドの組み合わせ、およびループは効率的かつ一般的なトラバーサル方法です。この記事では、それらを正しく使用する方法の詳細を説明し、考慮事項とサンプルコードを提供します。

1 ?? mysqli_resultとは何ですか?

mysqli_query()選択クエリを実行すると、返された結果はmysqli_resultオブジェクトです。このオブジェクトには、クエリによって返されるデータのすべての行が含まれています。このデータにアクセスするには、 fetch_assoc()などの特別な方法を使用する必要があります。

2 ?? fetch_assoc()とは何ですか?

fetch_assoc()は、 mysqli_resultが提供するメソッドです。結果セットから次の行を取り出し、連想配列を返すために使用されます。配列のキーはフィールド名で、値は対応するフィールド値です。各呼び出しは、 nullを返すことなく1行下に移動します。

3 ??ループ中に使用してクエリの結果を通過します

一般的に言えば、 fetch_assoc()と組み合わせて、 whileループを使用して、結果セットのデータを線ごとに取得します。これは、fetch_assoc()が一度に1行ずつを返すだけで、すべての行を完了するために継続的な呼び出しが必要なためです。

サンプルコード:

 <?php
// データベースに接続します
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

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

// クエリを実行します
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);

if ($result instanceof mysqli_result) {
    // トラバーサルクエリの結果
    while ($row = $result->fetch_assoc()) {
        echo 'ID: ' . $row['id'] . '<br>';
        echo '名前: ' . $row['name'] . '<br>';
        echo '郵便: ' . $row['email'] . '<br>';
        echo '<a href="https://m66.net/user/' . $row['id'] . '">詳細を確認してください</a><br><br>';
    }

    // 結果セットをリリースします
    $result->free();
} else {
    echo 'クエリに失敗しました: ' . $mysqli->error;
}

// 接続を閉じます
$mysqli->close();
?>

4 ??メモ

クエリが成功したかどうかを確認してください<br> $ result-> fetch_assoc()を呼び出す前に、 $ resultが実際にmysqli_resultオブジェクトであり、ではないことを確認してください。

リリース結果セット<br> トラバーサルの後、 $ result-> free()を呼び出してリソースをリリースして、メモリの漏れを避けます。

データベース接続を閉じます<br> データベースを使用した後、 $ mysqli-> close()を呼び出して接続を閉じます。

SQL注入を防ぐ<br> ユーザー入力がクエリに関与している場合は、文字列を直接スプライシングする代わりに、プリプロセシングステートメント( prepare + bind_param )を使用することを強くお勧めします。