데이터 페이징은 PHP를 사용하여 MySQL 데이터베이스를 조작 할 때 매우 일반적이고 중요한 기능입니다. Pagination은 한 번에 많은 양의 데이터를로드하여 발생하는 성능 압력을 효과적으로 줄이고 사용자 경험을 향상시킬 수 있습니다. 페이징 프로세스 중에, 특히 대규모 데이터 볼륨을 쿼리하기 위해 준비된 문은 종종 보안 및 성능을 보장하는 데 사용됩니다.
이 기사는 MySQLI_STMT :: ATT_GET 함수와 함께 페이징 로직에서 쿼리 결과 열의 길이를 동적으로 얻는 방법에 중점을 두어 데이터 처리 프로세스를 최적화합니다.
mysqli_stmt :: attr_get 은 mysqli 객체 지향 스타일의 메소드로, 전처리 된 문의 속성 값을 얻습니다. 이 기능을 통해 열의 버퍼 길이 ( mysqli_stmt_attr_update_max_length ) 및 기타 정보와 같은 정보를 쿼리 할 수 있습니다.
이 기능의 일반적인 사용 :
$length = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
이것은 큰 필드 (예 : 텍스트 , Blob )를 처리 할 때 매우 유용하며 잘라 내기 위해 적절한 메모리 공간을 동적으로 할당 할 수 있습니다.
페이지 매김에 일반적으로 사용되는 SQL 문 구조는 다음과 같습니다.
SELECT column1, column2 FROM table_name LIMIT ?, ?
그중 첫 번째 물음표는 오프셋이고 두 번째 물음표는 각 페이지에 표시된 레코드 수입니다 (한계).
PHP에서, 전처리 명령문 이이 두 매개 변수를 바인딩 한 후, 쿼리가 실행 된 다음 결과 변수를 바인딩하여 데이터를 라인별로 라인별로 얻습니다.
페이징 시나리오에서 쿼리 필드 길이가 불확실하거나 큰 필드가있는 경우 필드의 최대 길이를 미리 알면 데이터 자료가 피하고 데이터가 완료되도록 할 수 있습니다.
예를 들어, 결과 변수를 결합 할 때, 열 길이가 알려진 경우, 해당 길이의 버퍼는 동적으로 할당 될 수있다.
다음 예제는 페이징 쿼리에서 열 길이를 얻는 방법을 보여주고 결과를 mysqli_stmt :: attr_get 과 함께 바인딩합니다.
<?php
$mysqli = new mysqli('m66.net', 'username', 'password', 'database');
if ($mysqli->connect_errno) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$pageSize = 10;
$offset = ($page - 1) * $pageSize;
$sql = "SELECT id, title FROM articles LIMIT ?, ?";
$stmt = $mysqli->prepare($sql);
if (!$stmt) {
die("전처리가 실패했습니다: " . $mysqli->error);
}
// 페이징 매개 변수를 바인딩합니다
$stmt->bind_param('ii', $offset, $pageSize);
$stmt->execute();
// 열 길이 속성을 가져옵니다,MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH 열의 최대 버퍼 길이를 반환합니다
$maxLength = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
// 여기 시연을 위해,두 번째 열에만 집중한다고 가정 해 봅시다(title)길이
// 메타 데이터를 통해 필드 길이를 얻습니다(보다 자세한 방법에는 일반적으로 필요합니다 get_result() 또는 fetch_fields())
// 바인딩 결과 변수
$id = null;
$title = null;
$stmt->bind_result($id, $title);
// 데이터를 읽습니다
while ($stmt->fetch()) {
echo "ID: $id, 제목 길이 버퍼 크기: $maxLength, 제목: $title<br>";
}
$stmt->close();
$mysqli->close();
?>
이 예에서 Attr_get은 현재 전처리 명령문 열의 최대 버퍼 길이를 반환합니다. 이 값을 사용하여 큰 필드가 잘리지 않도록 프로그램에서 버퍼 할당을 조정할 수 있습니다.
mysqli_stmt :: attr_get은 정확한 길이 정보를 반환하기 전에 mysqli preprocessing 문을 올바르게 실행해야합니다.
멀티 컬럼 쿼리의 경우 attr_get은 전체 속성을 반환하며 단일 열의 길이를 세분화 할 수 없습니다. 단일 열의 길이를 정확하게 제어 해야하는 경우 mysqli_result :: fetch_fields를 결합하여 필드 메타 데이터를 얻는 것이 좋습니다.
큰 필드를 처리 할 때이 방법을 바인딩 결과 변수와 함께 합리적으로 사용하면 데이터 무결성이 향상 될 수 있습니다.
mysqli_stmt :: attr_get은 mysqli preprocessing 문에서 유용한 방법입니다. 특히 페이징 쿼리를 처리하는 데 불확실한 길이 필드가 포함될 때 개발자는 현장 길이 정보를 동적으로 얻고 데이터 자리를 피할 수 있습니다. 전처리 문과 페이징 로직을 결합하면 데이터 운영의 보안 및 효율성을 효과적으로 향상시킬 수 있습니다.