현재 위치: > 최신 기사 목록> pdostatement :: RowCount를 통해 동적 페이지 매김 쿼리를 구현하십시오

pdostatement :: RowCount를 통해 동적 페이지 매김 쿼리를 구현하십시오

gitbox 2025-05-19

PHP에서 페이징은 특히 많은 양의 데이터를 다룰 때 일반적인 요구 사항입니다. 페이지 매김은 응용 프로그램 성능과 사용자 경험을 효과적으로 향상시킬 수 있습니다. 우리는 일반적으로 한계오프셋 조항을 사용하여 쿼리 결과 수를 제한합니다. 그러나 동적 페이지 매김 쿼리 기능을 구현하는 방법은 무엇입니까? 여기서는 pdostatement :: rowCount () 메소드를 사용하여 동적 페이징을 구현하는 방법을 소개합니다.

1. pdostatement :: RowCount 란 무엇입니까?

pdostatement :: rowCount () 메소드는 마지막 SQL 실행의 영향을받는 행의 수를 얻는 데 사용됩니다. 이 방법은 SQL 쿼리 (특히 Select 문)에 의해 반환 된 행 수를 검색하는 데 사용될 수 있습니다. 쿼리 결과의 총 행 수를 알면 페이징 정보를 계산할 수 있기 때문에 페이징 구현에 매우 도움이됩니다.

그러나 모든 데이터베이스와 쿼리가 rowCount () 메소드를 지원하는 것은 아닙니다. 일부 유형의 쿼리 (예 : Select )의 경우이 방법의 동작이 다를 수 있습니다.

2. 페이지 매김 쿼리에 대한 기본 아이디어

Pagination Queries는 일반적으로 두 가지 정보에 의존합니다.

  • 총 기록 : 데이터베이스에 몇 개의 레코드가 있습니다.

  • 현재 페이지 데이터 : 현재 페이지 번호와 각 페이지에 표시된 레코드 수를 기반으로 해당 데이터를 쿼리하십시오.

다음 단계를 통해 동적 페이지 매김 쿼리 기능을 구현합니다.

  1. 먼저 쿼리를하여 모든 레코드의 총 수를 얻으십시오 ( 카운트 사용).

  2. 한계오프셋 조항을 사용하여 현재 페이지의 데이터를 얻으십시오.

  3. 총 페이지 수를 계산하고 페이징 내비게이션 링크를 생성하십시오.

3. 코드 예제를 구현하십시오

다음 샘플 코드는 pdostatement :: rowCount () 메소드를 통해 동적 페이징 쿼리 기능을 구현하는 방법을 보여줍니다.

 <?php
// 데이터베이스에 연결하십시오
$dsn = 'mysql:host=localhost;dbname=your_database';
$username = 'your_username';
$password = 'your_password';
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];

// 만들다 PDO 예
try {
    $pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
    echo '연결이 실패했습니다: ' . $e->getMessage();
    exit;
}

// 페이지 당 표시되는 레코드 수를 설정하십시오
$recordsPerPage = 10;

// 현재 페이지 수를 가져옵니다,기본값은 첫 페이지입니다
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($page < 1) $page = 1;

// 쿼리의 오프셋을 계산하십시오
$offset = ($page - 1) * $recordsPerPage;

// 총 레코드 수를 얻으십시오
$sqlCount = 'SELECT COUNT(*) FROM your_table';
$stmtCount = $pdo->query($sqlCount);
$totalRecords = $stmtCount->fetchColumn();

// 사용 LIMIT 그리고 OFFSET 현재 페이지 데이터를 쿼리하십시오
$sql = 'SELECT * FROM your_table LIMIT :limit OFFSET :offset';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':limit', $recordsPerPage, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();

// 쿼리 결과를 얻으십시오
$rows = $stmt->fetchAll();

// 총 페이지 수를 계산하십시오
$totalPages = ceil($totalRecords / $recordsPerPage);

// 출력 현재 페이지 데이터
echo "<h2>1. $page 페이지 데이터:</h2>";
foreach ($rows as $row) {
    echo '<pre>';
    print_r($row);
    echo '</pre>';
}

// 페이징 내비게이션을 보여줍니다
echo '<div>';
if ($page > 1) {
    echo '<a href="http://gitbox.net/your_page.php?page=' . ($page - 1) . '">이전 페이지</a> ';
}
if ($page < $totalPages) {
    echo '<a href="http://gitbox.net/your_page.php?page=' . ($page + 1) . '">다음 페이지</a>';
}
echo '</div>';
?>

4. 코드 설명

  1. 데이터베이스 연결 : PDO를 사용하여 MySQL 데이터베이스에 연결하고 필요한 오류 처리 옵션을 설정합니다.

  2. 총 기록 : 먼저 데이터베이스의 총 레코드 수는 Select Count (*) 를 통해 얻어지고 $ Totalrecords는 쿼리 결과를 저장합니다. 이 결과는 페이징 계산의 기초입니다.

  3. 동적 페이징 : 현재 페이지 번호 $ 페이지 와 페이지 레코드를 기준으로 오프셋을 계산 한 다음 LeaderPerpage 당 한도오프셋을 사용하여 현재 페이지의 데이터를 얻습니다.

  4. 페이지 매김 내비게이션 : 총 페이지 수를 계산 한 다음 현재 페이지 $ 페이지 를 기반으로 페이징 링크를 동적으로 생성합니다. 우리는 http://gitbox.net/your_page.php?page=x를 사용하여 Pagination Navigation을 구현합니다. 여기서 x 는 페이지 번호입니다.

5. 팁

  • pdostatement :: rowCount () 메소드는 일부 데이터베이스 (예 : MySQL)의 선택 문의 영향을받는 행 수를 올바르게 반환 할 수 있지만 다른 데이터베이스 (예 : PostgreSQL)의 경우 메소드가 올바르게 반환되지 않을 수 있습니다. 페이징의 정확성을 보장하기 위해서는 일반적으로 총 레코드 수를 얻으려면 카운트 (*)를 개별적으로 수행해야합니다.

  • 페이징 내비게이션을 구축 할 때는 특정 요구에 따라 각 페이지에 표시된 레코드 수를 조정하거나 특정 페이지로 점프하는 기능을 제공 할 수 있습니다.

6. 요약

pdostatement :: rowCount () 메소드 및 count (*) 쿼리를 사용하여 총 레코드 수를 얻으려면 효율적인 동적 페이징 쿼리 기능을 실현하는 데 도움이 될 수 있습니다. 합리적인 페이지 매김 내비게이션을 통해 사용자는 많은 양의 데이터를 쉽게 탐색하여 응용 프로그램의 유용성과 성능을 향상시킬 수 있습니다.