PDOStatement::fetchAll

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::fetchAll — 결과 집합에서 나머지 행을 가져옵니다.


설명

public PDOStatement::fetchAll(int $mode = PDO::FETCH_DEFAULT): array


public PDOStatement::fetchAll(int $mode = PDO::FETCH_COLUMN, int $column): array


public PDOStatement::fetchAll(int $mode = PDO::FETCH_CLASS, string $class, ?array $constructorArgs): array


public PDOStatement::fetchAll(int $mode = PDO::FETCH_FUNC, callable $callback): array


매개변수

mode
PDOStatement::fetch()에 설명된 대로 반환된 배열의 내용을 제어합니다. 기본값은 PDO::ATTR_DEFAULT_FETCH_MODE(기본값은 PDO::FETCH_BOTH)입니다.

결과 집합에서 단일 열의 모든 값으로 구성된 배열을 반환하려면 PDO::FETCH_COLUMN을 지정합니다. column 매개변수를 사용하여 원하는 열을 지정할 수 있습니다.

결과 집합에서 단일 열의 고유한 값만 가져오려면 PDO::FETCH_UNIQUE와 함께 PDO::FETCH_COLUMN을 bitwise-OR합니다.

지정된 열의 값으로 그룹화된 연관 배열을 반환하려면 PDO::FETCH_GROUP과 함께 PDO::FETCH_COLUMN을 bitwise-OR합니다.

args
이 인수는 mode 매개변수의 값에 따라 다른 의미를 갖습니다.
  • PDO::FETCH_COLUMN: 표시된 0 인덱스 열을 반환합니다.
  • PDO::FETCH_CLASS: 지정된 클래스의 인스턴스를 반환하고 각 행의 열을 클래스의 명명된 속성에 매핑합니다.
  • PDO::FETCH_FUNC: 각 행의 열을 호출의 매개변수로 사용하여 지정된 함수를 호출한 결과를 반환합니다.
constructorArgs
mode 매개변수가 PDO::FETCH_CLASS일 때 사용자 정의 클래스 생성자의 인수입니다.

반환 값

PDOStatement::fetchAll()은 결과 집합의 나머지 모든 행을 포함하는 배열을 반환합니다. 배열은 각 행을 열 값의 배열 또는 각 열 이름에 해당하는 속성이 있는 개체로 나타냅니다. 가져올 결과가 0이면 빈 배열이 반환됩니다.

이 메서드를 사용하여 큰 결과 집합을 가져오면 시스템 및 네트워크 리소스에 대한 수요가 많이 발생합니다. 모든 데이터를 검색하고 PHP에서 조작하는 대신 데이터베이스 서버를 사용하여 결과 세트를 조작하는 것을 고려하십시오. 예를 들어, SQL에서 WHERE 및 ORDER BY 절을 사용하여 PHP로 결과를 검색하고 처리하기 전에 결과를 제한하십시오.


변경 로그

버전 설명
8.0.0 이 메서드는 항상 지금 배열을 반환하지만 이전에는 실패 시 false가 반환되었을 수 있습니다.

Examples

예제 #1 결과 집합의 나머지 모든 행 가져오기

                  
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Fetch all of the remaining rows in the result set */
print("Fetch all of the remaining rows in the result set:\n");
$result = $sth->fetchAll();
print_r($result);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

Fetch all of the remaining rows in the result set:
Array
(
    [0] => Array
        (
            [name] => apple
            [0] => apple
            [colour] => red
            [1] => red
        )

    [1] => Array
        (
            [name] => pear
            [0] => pear
            [colour] => green
            [1] => green
        )

    [2] => Array
        (
            [name] => watermelon
            [0] => watermelon
            [colour] => pink
            [1] => pink
        )

)
                

예제 #2 결과 집합에서 단일 열의 모든 값 가져오기

다음 예제에서는 SQL 문 자체가 행당 여러 열을 반환할 수 있는 경우에도 결과 집합에서 단일 열의 모든 값을 반환하는 방법을 보여 줍니다.

                  
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Fetch all of the values of the first column */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

Array(3)
(
    [0] =>
    string(5) => apple
    [1] =>
    string(4) => pear
    [2] =>
    string(10) => watermelon
)
                

예제 #3 단일 열로 모든 값 그룹화

다음 예는 결과 집합에서 지정된 열의 값으로 그룹화된 연관 배열을 반환하는 방법을 보여줍니다. 배열에는 세 개의 키가 포함됩니다. 사과와 배 값은 두 가지 다른 색상을 포함하는 배열로 반환되는 반면 수박은 한 가지 색상만 포함하는 배열로 반환됩니다.

                  
<?php
$insert = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)");
$insert->execute(array('apple', 'green'));
$insert->execute(array('pear', 'yellow'));

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Group values by the first column */
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

array(3) {
  ["apple"]=>
  array(2) {
    [0]=>
    string(5) "green"
    [1]=>
    string(3) "red"
  }
  ["pear"]=>
  array(2) {
    [0]=>
    string(5) "green"
    [1]=>
    string(6) "yellow"
  }
  ["watermelon"]=>
  array(1) {
    [0]=>
    string(5) "pink"
  }
}
                

예제 #4 각 결과에 대한 클래스 인스턴스화

다음 예는 PDO::FETCH_CLASS 페치 스타일의 동작을 보여줍니다.

                  
<?php
class fruit {
    public $name;
    public $colour;
}

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

array(3) {
  [0]=>
  object(fruit)#1 (2) {
    ["name"]=>
    string(5) "apple"
    ["colour"]=>
    string(5) "green"
  }
  [1]=>
  object(fruit)#2 (2) {
    ["name"]=>
    string(4) "pear"
    ["colour"]=>
    string(6) "yellow"
  }
  [2]=>
  object(fruit)#3 (2) {
    ["name"]=>
    string(10) "watermelon"
    ["colour"]=>
    string(4) "pink"
  }
  [3]=>
  object(fruit)#4 (2) {
    ["name"]=>
    string(5) "apple"
    ["colour"]=>
    string(3) "red"
  }
  [4]=>
  object(fruit)#5 (2) {
    ["name"]=>
    string(4) "pear"
    ["colour"]=>
    string(5) "green"
  }
}
                

예제 #5 각 결과에 대한 함수 호출

다음 예는 PDO::FETCH_FUNC 페치 스타일의 동작을 보여줍니다.

                  
<?php
function fruit($name, $colour) {
    return "{$name}: {$colour}";
}

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
var_dump($result);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

array(3) {
  [0]=>
  string(12) "apple: green"
  [1]=>
  string(12) "pear: yellow"
  [2]=>
  string(16) "watermelon: pink"
  [3]=>
  string(10) "apple: red"
  [4]=>
  string(11) "pear: green"
}
                

기타