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();
?>
data_seek関数
data_seekは、指定された行への結果セットポインターを見つけることであり、次にfetch_assocが呼び出されたときに、この行から読み取りを開始します。
ラインインデックスは0 <br>から始まります 行のインデックスカウントは0から始まります。最初の行を読みたい場合は、 data_seek(0) ; 3行目はdata_seek(2)です。
適用されるシナリオ制限<br> data_seekは、バッファリングをサポートする結果セットを使用する場合にのみ使用できます。デフォルトでは、 mysqli_queryはバッファリング結果セットを返します。
mysqli_result :: data_seekとmysqli_fetch_assocの組み合わせにより、結果セットの任意のデータの行を読み取るために柔軟にジャンプして、結果セット全体を横断するパフォーマンスオーバーヘッドを回避できます。この手法を習得すると、より効率的なデータベースアクセスコードの作成に役立ちます。