> 백엔드 개발 > PHP 튜토리얼 > 여러 반복에 대한 PDO 결과에서 배열 포인터를 재설정하는 방법은 무엇입니까?

여러 반복에 대한 PDO 결과에서 배열 포인터를 재설정하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-30 04:09:28
원래의
682명이 탐색했습니다.

How to Reset the Array Pointer in PDO Results for Multiple Iterations?

결과에서 PDO 재설정 배열 포인터

MySQL에서 PDO 메서드로 전환하는 동안 가져온 메서드를 반복하려고 할 때 문제가 발생할 수 있습니다. 매번 행 0부터 시작하여 두 번 배열합니다. 해결책은 두 방법 간의 접근 방식의 차이점을 이해하는 데 있습니다.

MySQL 프레임워크에서 mysql_data_seek 함수는 행 포인터를 결과 배열 내의 특정 위치로 되감습니다. 그러나 PDO에서는 이 기능을 직접 사용할 수 없습니다. 대신, 원하는 결과를 얻기 위해 두 가지 대체 기술을 사용할 수 있습니다.

결과를 배열에 저장

첫 번째 접근 방식은 설명된 것처럼 결과를 배열에 저장하는 것입니다. 아래 코드 조각에서:

$pdo = new PDO('mysql:host=' . $host . ';dbname='.$database, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT * FROM mytable WHERE active = 1 ORDER BY name ASC');
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();

$rows = $stmt->fetchAll();

foreach ($rows as $r) {
    // first run
}

foreach ($rows as $r) {
    // second run
}
로그인 후 복사

fetchAll 메서드를 활용하면 전체 결과 집합이 $rows 배열에 저장되므로 다음과 같은 여러 반복이 가능합니다. 재설정 포인터.

쿼리 재실행

또는 쿼리를 다시 실행하도록 선택할 수도 있습니다. 배열 저장 방법보다 효율성은 떨어지지만 결과 집합이 상대적으로 작은 경우 이 접근 방식으로 충분할 수 있습니다.

$pdo = new PDO('mysql:host=' . $host . ';dbname='.$database, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT * FROM mytable WHERE active = 1 ORDER BY name ASC');
$stmt->setFetchMode(PDO::FETCH_ASSOC);

while($row = $stmt->fetch())
{
    // first run
}

$stmt->execute(); //re-execute the query

while($row = $stmt->fetch())
{
    // second run
}
로그인 후 복사

쿼리를 다시 실행하면 포인터가 행에서 시작하는 새 결과 집합이 생성됩니다. 영. 이 접근 방식을 사용하면 두 반복 모두 전체 데이터 세트에 액세스할 수 있습니다.

위 내용은 여러 반복에 대한 PDO 결과에서 배열 포인터를 재설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿