現在の位置: ホーム> 最新記事一覧> MySqliの使用方法::基本結果セット処理の例のuse_result関数

MySqliの使用方法::基本結果セット処理の例のuse_result関数

gitbox 2025-08-25

PHPでは、 MySQLI拡張機能は、MySQLデータベースを接続および操作するための強力なツールです。 SQLクエリの結果セットを処理する複数の方法を提供します。その中で、 mysqli :: use_result関数は一般的に使用される関数であり、特に大量のデータが必要なシナリオや結果セットを行ごとに読みたいシナリオに適しています。この記事では、基本的な結果セット処理にmysqli :: use_result関数を使用する方法を詳細に説明し、その実用的なアプリケーションを実証する例を提供します。

mysqli :: use_resultとは何ですか?

mysqli :: use_resultは、実行されたSQLクエリから結果セットを取得するために使用されるmysqliクラスの方法です。この方法を呼び出すと、すべての結果を一度にメモリにロードするわけではありませんが、データをラインごとに処理できる結果セットへのポインターを返します。

この方法は通常、選択クエリで使用されます。クエリが大量のデータを返すと、 use_resultは過度のメモリの消費を回避し、パフォーマンスを向上させることができます。これは、すべてのクエリ結果を一度にメモリにロードするMySqli :: Store_Resultメソッドとは異なります。

mysqliを使用するための基本的な手順:: use_result

  1. データベース接続を作成<br> まず、 MySQLI_Connect関数を介してMySQLデータベースに接続する必要があります。

  2. sql query <br>を実行します MySQLI_Query関数を使用してSQLクエリを実行して、クエリステートメントが選択されたタイプであることを確認します。

  3. use_resultメソッドを呼び出してください<br> mysqli :: use_resultメソッドを呼び出してクエリの結果を取得します。

  4. 処理結果セット<br> mysqli_fetch_rowmysqli_fetch_assocなどの関数を使用して、データがなくなるまでquery結果の結果を行ごとに取得します。

  5. 接続を閉じます<br> クエリと結果の処理が完了したら、データベース接続を閉じることを忘れないでください。

サンプルコード

MySqli :: use_resultメソッドを使用して結果セットを処理する簡単な例を次に示します。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ステップ 1: データベース接続を作成します</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-comment">// 接続が成功しているかどうかを確認してください</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"接続に失敗しました: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// ステップ 2: 埋め込むSQLクエリ</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT id, name, email FROM users"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);

</span><span><span class="hljs-comment">// 检查クエリ是否成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>) {
    </span><span><span class="hljs-comment">// ステップ 3: 使用use_result結果セットを取得します</span></span><span>
    </span><span><span class="hljs-variable">$res</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">use_result</span></span><span>();
    
    </span><span><span class="hljs-comment">// ステップ 4: 結果セットを行ごとに処理します</span></span><span>
    </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$res</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ID: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] . </span><span><span class="hljs-string">" - Name: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">" - Email: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'email'</span></span><span>] . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"クエリ失败: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error;
}

</span><span><span class="hljs-comment">// ステップ 5: データベース接続を閉じます</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

コード解析

  1. データベース接続を作成します。
    まず、新しいMySQLIを介してデータベース接続を確立し、データベースのホスト名、ユーザー名、パスワード、データベース名を渡します。接続が失敗した場合、エラーメッセージは$ mysqli-> connect_errorを介して返され、スクリプトが終了します。

  2. クエリを実行します:
    $ mysqli-> queryメソッドを使用してクエリステートメントを実行し、クエリが成功した後、結果オブジェクトが返されます。

  3. 結果セットを取得します:
    $ mysqli-> use_result()メソッドを呼び出して、結果セットへのポインターを取得します。これは、クエリ内のデータの各行を指します。

  4. ラインごとの処理結果:
    fetch_assocメソッドを使用して、列ごとにデータ行を抽出します。これは、キーが列名で、値がその列の値である連想配列を返します。

  5. 接続を閉じます:
    データが処理された後、 $ mysqli-> close()を使用してデータベース接続を閉じます。

use_resultを使用する長所と短所

アドバンテージ:

  • メモリ保存: use_resultはすべてのデータを一度にメモリにロードするわけではないため、大規模なデータクエリの処理に適しています。

  • パフォーマンスの向上:ビッグデータのクエリの場合、回線ごとの処理結果セットは通常、すべてのデータを一度に読み取るよりも効率的です。

欠点:

  • 複数のクエリを同時に実行することはできません。Store_resultメソッドとは異なり、 use_resultを使用する場合、現在のクエリの結果セットのみを処理でき、複数のクエリを実行できません。

  • ランダムアクセスはサポートされていません: use_resultで返される結果セットは行ごとにのみ処理でき、結果セットの任意の位置にリダイレクトすることはできません。

結論は

mysqli :: use_resultは、大規模なデータセットを処理する際の非常に便利なツールであり、特にデータがラインごとに処理され、メモリ使用に関する厳格な要件があるシナリオに適しています。それを正しく使用する方法を理解することは、開発者がパフォーマンスとメモリ管理においてより良い選択をするのに役立ちます。大量のデータを扱っている場合、またはクエリ結果のメモリフットプリントに敏感な場合、 use_resultは価値のあるアプローチです。