데이터베이스 페이지 매김 쿼리를 수행 할 때는 일반적으로 많은 양의 데이터를 표시 해야하는 시나리오를 만나게됩니다. 모든 데이터를 한 번에 페이지에로드하면 페이지가 천천히로드되거나 시간 초과가 발생할 수 있습니다. 이 문제를 해결하기 위해 페이징 기술을 사용하여 데이터를 배치로로드 할 수 있으며 PHP의 Array_Chunk 함수는 페이징 쿼리에서 SQL 쿼리 결과를 효과적으로 처리하는 데 도움이되는 매우 효과적인 도구입니다.
이 기사는 PHP의 Array_Chunk 함수를 사용하여 페이징 쿼리의 구현 프로세스를 최적화하는 방법을 소개합니다.
Array_Chunk 는 큰 배열을 여러 개의 작은 배열로 분할하는 데 사용되는 PHP의 내장 기능입니다. 기본 사용량은 다음과 같습니다.
array_chunk(array $array, int $length, bool $preserve_keys = false): array
$ 배열 : 분할 할 배열.
$ 길이 : 각 작은 배열의 길이.
$ preserve_keys : 원래 배열의 키 이름을 보존할지 여부 (기본값은 false ).
이 기능을 통해 큰 데이터 세트를 여러 페이지 배열로 나누어 한 번에 한 페이지의 데이터를 반환 할 수 있습니다.
데이터베이스에 많은 양의 사용자 데이터가 포함 된 사용자 테이블 ( 사용자 )이 있다고 가정합니다. 이 데이터를 페이지에 표시하고 싶습니다. 일반적인 관행은 데이터베이스의 모든 레코드를 한 번에 쿼리하고 백엔드에서 페이징 로직을 처리하는 것입니다. 그러나 그렇게하면 특히 데이터 볼륨이 매우 큰 경우 성능 문제가 발생할 수 있습니다.
따라서 array_chunk 함수를 사용하여 쿼리 결과를 여러 페이지로 나누어 성능을 최적화 할 수 있습니다. SQL 쿼리 결과를 Array_Chunk를 통해 여러 배열로 나눈 다음 페이지별로 데이터를 표시합니다.
다음은 Array_Chunk 함수를 사용하여 SQL 쿼리 결과를 나타내는 방법을 보여주는 간단한 예입니다.
<?php
// 데이터베이스에 연결하십시오
$mysqli = new mysqli("localhost", "username", "password", "database");
// 연결을 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 페이지 당 표시되는 레코드 수를 설정하십시오
$items_per_page = 10;
// 현재 페이지 번호를 얻으십시오,기본값입니다 1
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $items_per_page;
// 쿼리 데이터
$query = "SELECT * FROM users LIMIT $offset, $items_per_page";
$result = $mysqli->query($query);
// 쿼리가 성공하면
if ($result->num_rows > 0) {
// 쿼리 결과를 배열로 저장합니다
$data = [];
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
// 사용 array_chunk 페이지 당 데이터 양으로 쿼리 결과를 분할
$chunks = array_chunk($data, $items_per_page);
// 현재 페이지의 데이터 표시를 가져옵니다
$current_page_data = $chunks[$page - 1];
// 현재 페이지의 데이터를 표시하십시오
foreach ($current_page_data as $user) {
echo "사용자 이름: " . $user['username'] . "<br>";
echo "우편: " . $user['email'] . "<br>";
echo "<hr>";
}
} else {
echo "사용자 데이터가 발견되지 않았습니다。";
}
// 페이지 매김 링크
$total_pages = ceil(count($data) / $items_per_page);
echo "<div>흔한 " . $total_pages . " 페이지</div>";
for ($i = 1; $i <= $total_pages; $i++) {
echo "<a href='?page=$i'>1. $i 페이지</a> ";
}
$mysqli->close();
?>
Array_Chunk를 사용하면 쿼리 결과를 페이지별로 자르고 현재 페이지의 데이터 만 표시 할 수 있습니다. 이는 대량의 데이터를 처리하는 데 매우 유용하며 각 페이지로드의 부담을 효과적으로 줄일 수 있습니다.
또한 페이징 기능을 추가로 최적화 할 수 있습니다. 예를 들어, 매번 페이지를 새로 고치지 않고 AJAX를 통해 데이터를 동적으로로드 할 수 있습니다. 이런 식으로 사용자 경험은 더 매끄럽습니다.
Pagination에서 페이지 매개 변수는 일반적으로 URL에 전달되어 현재 페이지 번호를 나타냅니다. 페이징 링크가 다음과 같이 URL 구조를 사용하는 경우.
http://example.com/users?page=2
우리는 URL의 도메인 부분을 m66.net 으로 교체하여 필요한 형식이 다음과 같습니다.