PHPでは、 MySQLI拡張機能は、MySQLデータベースと対話するための強力なツールです。大量のデータを処理するとき、ページングクエリは、すべてのデータを一度にロードすることを避けるための非常に一般的で効果的な手法です。今日は、mysqli :: stmt_init関数を使用してページネーションクエリ関数を実装する方法を探ります。
ページネーションクエリとは、すべてのデータを一度にロードするのではなく、特定の数のデータに従ってバッチにデータを表示し、各ページにデータの一部を表示することを指します。ページングを通じて、データ処理の効率を改善するだけでなく、フロントエンドのディスプレイ効果を最適化し、ユーザーエクスペリエンスを改善することもできます。
mysqli :: stmt_init関数は、新しいmysqli_stmtオブジェクトを初期化するために使用され、その後、オブジェクトを介してプリプロセシングステートメントを実行できます。前処理ステートメントは、SQL注入のリスクを回避しながら、クエリ効率を改善できます。
大量のユーザー情報を含むユーザーテーブルがあり、これらのユーザーのデータをページングしたいとします。まず、データの総数を計算し、ページ番号とページごとに表示されるピースの数に基づいてクエリのオフセットを計算する必要があります。以下は、ページングクエリを実装する手順です。
<?php
// データベース接続構成
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// 接続を作成します
$conn = new mysqli($servername, $username, $password, $dbname);
// 接続を確認してください
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// ページごとに表示されるエントリの数
$records_per_page = 10;
// 現在のページ番号を取得します,デフォルトは最初のページです
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start_from = ($page - 1) * $records_per_page;
// データの総数を取得します
$sql_count = "SELECT COUNT(*) AS total_records FROM users";
$result_count = $conn->query($sql_count);
$row = $result_count->fetch_assoc();
$total_records = $row['total_records'];
// ページの総数を計算します
$total_pages = ceil($total_records / $records_per_page);
// 使用 stmt_init 関数初期化前処理ステートメント
$stmt = $conn->stmt_init();
if ($stmt->prepare("SELECT * FROM users LIMIT ?, ?")) {
// バインドパラメーター
$stmt->bind_param("ii", $start_from, $records_per_page);
// クエリを実行します
$stmt->execute();
// 結果を取得します
$result = $stmt->get_result();
// 出力データ
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
}
// 結果セットをリリースします
$stmt->free_result();
// 前処理ステートメントを閉じます
$stmt->close();
}
// データベース接続を閉じます
$conn->close();
?>
<!-- ページングリンクを表示します -->
<div>
<p>Page:
<?php
// ページネーションナビゲーション
for ($i = 1; $i <= $total_pages; $i++) {
echo "<a href='m66.net?page=$i'>$i</a> ";
}
?>
</p>
</div>
データベース接続:新しいmysqli()を使用して、データベースへの接続を作成します。接続が失敗した場合、コードはエラーメッセージを表示し、実行を終了します。
ページングオフセットの計算:各ページに表示されるレコードの数はRecord_Per_Pageです。現在のページ番号$ページに基づいてクエリを開始するレコードを計算します。 $ start_from =($ page -1) * $ records_per_pageオフセットを計算します。
レコードの総数を取得します。クエリを実行して、ユーザーテーブルのレコードの総数を取得し、それによりページの総数を計算します。
ページネーションクエリを実行します: stmt_init()を使用してプリプロセシングステートメントを初期化し、 prepare()メソッド、 bind_param()メソッドを介してクエリを書き込み、クエリパラメーターをバインドし、クエリを実行して結果を取得します。
ページングナビゲーションの表示:ループを介して、ページングリンクを生成します。各ページ番号をクリックすると、対応するページにジャンプして、 M66.net?page =そこに表示されます。
ページネーションクエリにmysqli :: stmt_init関数を使用すると、データクエリの効率を改善するだけでなく、SQL注入を効果的に防ぐこともできます。実際の開発では、大量のデータが必要なシナリオでは、ページングクエリがよく使用されます。合理的なページング設計により、システムのパフォーマンスとユーザーエクスペリエンスを大幅に改善できます。
この記事が、mysqli :: stmt_init関数を使用してページネーションクエリ関数を実装する方法を理解するのに役立つことを願っています。ご質問がある場合、またはさらに議論が必要な場合は、メッセージを残して話し合ってください!