PDOStatement::fetchAll — 결과 집합의 모든 행을 포함하는 배열을 반환합니다(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0).
배열 PDOStatement::fetchAll ([ int $fetch_style [, Mixed $fetch_argument [, array $ctor_args = array() ]]] )
fetch_style
다음 줄이 호출자에게 반환되는 방법을 제어합니다. 이 값은 PDO::FETCH_* 일련의 상수 중 하나여야 하며 기본값은 PDO::ATTR_DEFAULT_FETCH_MODE 값입니다(기본값은 PDO::FETCH_BOTH).
결과 집합에 있는 단일 열의 모든 값을 포함하는 배열을 반환하려면 PDO::FETCH_COLUMN을 지정합니다. column-index 매개변수를 지정하여 원하는 열을 가져옵니다.
결과 세트에서 단일 열의 고유 값을 얻으려면 비트별 OR PDO::FETCH_COLUMN 및 PDO::FETCH_UNIQUE가 필요합니다.
지정된 열에 따라 그룹화된 값이 있는 연관 배열을 반환하려면 PDO::FETCH_COLUMN 및 PDO::FETCH_GROUP을 비트 단위로 OR해야 합니다.
fetch_argument이 매개변수는 fetch_style 매개변수의 값에 따라 다른 의미를 갖습니다.
PDO::FETCH_COLUMN
: 0부터 시작하여 인덱스가 지정된 지정된 열을 반환합니다.
PDO::FETCH_CLASS
: 각 행의 열을 클래스의 해당 속성 이름에 매핑하여 지정된 클래스의 인스턴스를 반환합니다.
PDO::FETCH_FUNC
: 각 행의 열을 지정된 함수에 매개변수로 전달하고 함수 호출 후 결과를 반환합니다.
ctor_args fetch_style 매개변수가 PDO::FETCH_CLASS인 경우 사용자 정의 클래스 생성자의 매개변수입니다.
PDOStatement::fetchAll()은 결과 집합에 남아 있는 모든 행을 포함하는 배열을 반환합니다. 이 배열의 각 행은 열 값의 배열이거나 각 열 이름에 해당하는 속성을 가진 개체입니다.
큰 결과 집합을 얻기 위해 이 방법을 사용하면 시스템에 큰 부담을 주고 상당한 네트워크 리소스를 소비할 수 있습니다. 모든 데이터를 검색한 다음 PHP로 작업하는 대신 데이터베이스 서비스를 사용하여 결과 집합을 처리하는 것을 고려해 보세요. 예를 들어, SQL에서 WHERE 및 ORDER BY 절을 사용하여 데이터를 검색하고 PHP를 통해 처리하기 전에 결과를 한정합니다.
<?php$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->execute();/* 결과 집합의 나머지 행을 모두 가져옵니다*/print("모든 항목을 가져옵니다. 결과 집합의 나머지 행:n");$result = $sth->fetchAll();print_r($result);?>
위 예제의 출력은 다음과 같습니다.
결과 집합의 나머지 행을 모두 가져옵니다. Array( [0] => Array ( [NAME] => pear [0] => pear [COLOUR] => green [1] => green ) [1] => 배열( [이름] => 수박 [0] => 수박 [COLOUR] => 분홍색 [1] => 분홍색 ))
다음 예에서는 SQL 문 자체가 행당 여러 열을 반환할 수 있지만 결과 집합에서 단일 열의 모든 값을 반환하는 방법을 보여줍니다.
<?php$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->execute();/* 첫 번째 열의 모든 값 가져오기*/$result = $sth-> fetchAll(PDO::FETCH_COLUMN, 0);var_dump($result);?>
위 예제의 출력은 다음과 같습니다.
배열(3)( [0] => 문자열(5) => 사과 [1] => 문자열(4) => 배 [2] => 문자열(10) => 수박)
다음 예에서는 결과 집합에서 지정된 열의 값으로 그룹화된 연관 배열을 반환하는 방법을 보여줍니다. 배열에는 세 개의 키가 포함되어 있습니다. 반환된 사과와 배 배열에는 서로 다른 두 가지 색상이 포함되어 있고 반환된 수박 배열에는 한 가지 색상만 포함되어 있습니다.
<?php$insert = $dbh->prepare("INSERT INTO 과일(이름, 색상) VALUES (?, ?)");$insert->execute(array('apple', 'green'));$insert ->execute(array('pear', 'yellow'));$sth = $dbh->prepare("이름, 색상 FROM을 선택하세요. Fruit");$sth->execute();/* 첫 번째 열을 기반으로 한 그룹*/var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));?>
위 예제의 출력은 다음과 같습니다.
array(3) { ["apple"]=> array(2) { [0]=> string(5) "녹색" [1]=> string(3) "빨간색" } ["pear"]=> 배열 (2) { [0]=> 문자열(5) "녹색" [1]=> 문자열(6) "노란색" } ["수박"]=> 배열(1) { [0]=> 문자열(5) "녹색" }}
다음 예에서는 PDO::FETCH_CLASS 획득 스타일의 동작을 보여줍니다.
<?phpclass 과일 { 공개 $name; 공개 $colour;}$sth = $dbh->prepare("이름, 색상 FROM 과일 선택");$sth->execute();$result = $sth->fetchAll( PDO::FETCH_CLASS, "과일");var_dump($result);?>
위 예제의 출력은 다음과 같습니다.
array(3) { [0]=> object(fruit)#1 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(5) "green" } [ 1]=> object(과일)#2 (2) { ["name"]=> string(4) "배" ["colour"]=> string(6) "노란색" } [2]=> object( 과일)#3 (2) { ["name"]=> string(10) "수박" ["colour"]=> string(4) "분홍색" }}
다음 예에서는 PDO::FETCH_FUNC 가져오기 스타일의 동작을 보여줍니다.
<?phpfunction Fruit($name, $colour) { return "{$name}: {$colour}";}$sth = $dbh->prepare("SELECT 이름, 색상 FROM 과일");$sth->execute ();$result = $sth->fetchAll(PDO::FETCH_FUNC, "과일");var_dump($result);?>
위 예제의 출력은 다음과 같습니다.
array(3) { [0]=> string(12) "사과: 녹색" [1]=> string(12) "배: 노란색" [2]=> string(16) "수박: 분홍색"}