現在の位置: ホーム> 最新記事一覧> mysqli_result :: data_seekとmysqli_fetch_assocと組み合わせた

mysqli_result :: data_seekとmysqli_fetch_assocと組み合わせた

gitbox 2025-05-26

PHPを使用してMySQLデータベースを操作する場合、 mysqli_queryを介してクエリ結果を取得し、 mysqli_fetch_assocを使用して行ごとにデータを読み取ります。結果セットの行にジャンプしてデータを読みたい場合は、 mysqli_result :: data_seekが役立ちます。

この記事では、mysqli_result :: data_seekおよびmysqli_fetch_assocを使用して、結果セットの指定された行データを読み取る方法について説明します。


基本概念

  • mysqli_result :: data_seek(int $ offset) :結果の内部ポインターを指定された行(0からカウント)に移動します。

  • mysqli_fetch_assoc(mysqli_result $ result) :現在のポインター位置からデータの行を取得し、連想配列を返します。

シナリオを使用します

クエリを実行し、複数の結果を取得し、順番に読み取るのではなく、特定のデータの行にランダムにアクセスするとします。


コードの例

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

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

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

if ($result && $result->num_rows > 0) {
    // 読みたいとします3ラインデータ(からのインデックス0始める,つまり、3行はインデックスです2)
    $targetRow = 2;

    // ポインターをターゲット行に移動します
    $result->data_seek($targetRow);

    // 現在の行からデータを読み取ります
    $row = $result->fetch_assoc();

    // 出力データ
    echo "ID: " . $row['id'] . "\n";
    echo "Name: " . $row['name'] . "\n";
    echo "Email: " . $row['email'] . "\n";
} else {
    echo "データは見つかりませんでした";
}

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

キーノート

  1. data_seek関数
    data_seekは、指定された行への結果セットポインターを見つけることであり、次にfetch_assocが呼び出されたときに、この行から読み取りを開始します。

  2. ラインインデックスは0 <br>から始まります 行のインデックスカウントは0から始まります。最初の行を読みたい場合は、 data_seek(0) ; 3行目はdata_seek(2)です。

  3. 適用されるシナリオ制限<br> data_seekは、バッファリングをサポートする結果セットを使用する場合にのみ使用できます。デフォルトでは、 mysqli_queryはバッファリング結果セットを返します。


要約します

mysqli_result :: data_seekmysqli_fetch_assocの組み合わせにより、結果セットの任意のデータの行を読み取るために柔軟にジャンプして、結果セット全体を横断するパフォーマンスオーバーヘッドを回避できます。この手法を習得すると、より効率的なデータベースアクセスコードの作成に役立ちます。