처음부터 PDO 결과 세트를 통해 반복
MySQL SELECT 메서드에서 PDO 메서드로 전환할 때 배열 포인터를 재설정하여 다음을 반복합니다. 결과 세트를 여러 번 작성하는 것은 어려울 수 있습니다. 이는 이러한 메서드가 배열 포인터를 처리하는 방식의 차이 때문입니다.
제공된 코드에서 첫 번째 while 루프는 행 0부터 시작하여 가져온 배열을 성공적으로 반복합니다. 그러나 두 번째 while 루프는 PDO의 fetch() 메소드가 각 호출에서 배열 포인터를 전진시키기 때문에 빈 세트를 반환합니다.
원하는 동작을 달성하려면 결과를 배열에 저장한 다음 해당 배열을 반복할 수 있습니다. 여러 번. 예는 다음과 같습니다.
$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 결과 세트를 여러 번 반복하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!