PHP에서 MySQLI Extension은 MySQL 데이터베이스와 상호 작용하는 강력한 도구입니다. 많은 양의 데이터를 처리 할 때 페이징 쿼리는 모든 데이터를 한 번에로드하지 않도록 매우 일반적이고 효과적인 기술입니다. 오늘 우리는 MySQLI :: STMT_INIT 함수를 사용하여 페이지 매김 쿼리 기능을 구현하는 방법을 살펴 보겠습니다.
Pagination Query는 특정 수의 데이터에 따라 배치로 데이터를 표시하고 모든 데이터를 한 번에로드하지 않고 각 페이지의 데이터의 일부를 표시하는 것을 말합니다. 페이징을 통해 데이터 처리 효율성을 향상시킬뿐만 아니라 프론트 엔드 디스플레이 효과를 최적화하고 사용자 경험을 향상시킬 수 있습니다.
mysqli :: stmt_init 함수는 새로운 mysqli_stmt 객체를 초기화하는 데 사용되며, 그런 다음 객체를 통해 전처리 문을 실행할 수 있습니다. 전처리 명세서는 SQL 주입의 위험을 피하면서 쿼리 효율성을 향상시킬 수 있습니다.
많은 양의 사용자 정보가 포함 된 사용자 테이블이 있고 이러한 사용자의 데이터를 페이지를 Page려고한다고 가정 해 봅시다. 먼저 총 데이터 수를 계산 한 다음 페이지 번호와 페이지 당 표시된 조각 수를 기반으로 쿼리의 오프셋을 계산해야합니다. 다음은 페이징 쿼리를 구현하는 단계입니다.
<?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 ()를 사용하여 데이터베이스에 연결을 만듭니다. 연결이 실패하면 코드는 오류 메시지를 표시하고 실행을 종료합니다.
페이징 오프셋 계산 : 각 페이지에 표시된 레코드 수는 Records_per_Page 이며 현재 페이지 번호 $ 페이지 를 기반으로 쿼리를 시작할 레코드를 계산하십시오. $ start_from = ($ page -1) * $ records_per_page 오프셋을 계산합니다.
총 레코드 수 받기 : 사용자 테이블에서 총 레코드 수를 얻으려면 쿼리를 실행하여 총 페이지 수를 계산합니다.
Pagination Query 실행 : stmt_init ()를 사용하여 전처리 문을 초기화하고 read () 메서드, bind_param () 메서드를 통해 쿼리를 작성하여 쿼리 매개 변수를 바인 다음 쿼리를 실행하고 결과를 얻습니다.
페이징 내비게이션 표시 : 루프를 통해 페이징 링크를 생성하십시오. 각 페이지 번호를 클릭하면 해당 페이지로 이동하여 m66.net?page=$i 형식으로 표시됩니다.
Pagination 쿼리에 mysqli :: stmt_init 함수를 사용하면 데이터 쿼리의 효율성을 향상시킬뿐만 아니라 SQL 주입을 효과적으로 방지 할 수 있습니다. 실제 개발에서 페이징 쿼리는 종종 많은 양의 데이터가 필요한 시나리오에서 사용됩니다. 합리적인 페이징 설계를 통해 시스템 성능 및 사용자 경험을 크게 향상시킬 수 있습니다.
이 기사가 MySQLI :: STMT_INIT 함수를 사용하여 페이지 매김 쿼리 기능을 구현하는 방법을 이해하는 데 도움이되기를 바랍니다. 궁금한 점이 있거나 추가 토론이 필요한 경우에 대한 메시지를 남겨주십시오.