PDOStatement::fetch
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::fetch — 결과 집합에서 다음 행을 가져옵니다.
설명
public PDOStatement::fetch(int $mode
= PDO::FETCH_DEFAULT, int $cursorOrientation
= PDO::FETCH_ORI_NEXT, int $cursorOffset
= 0): mixed
PDOStatement 개체와 연결된 결과 집합에서 행을 가져옵니다. mode
매개변수는 PDO가 행을 반환하는 방법을 결정합니다.
매개변수
mode
- 다음 행이 호출자에게 반환되는 방법을 제어합니다. 이 값은
PDO::FETCH_*
상수 중 하나여야 하며 기본값은PDO::ATTR_DEFAULT_FETCH_MODE
(기본값은PDO::FETCH_BOTH
)입니다.-
PDO::FETCH_ASSOC
: 결과 집합에 반환된 대로 열 이름으로 인덱싱된 배열을 반환합니다. -
PDO::FETCH_BOTH
(default): 결과 집합에 반환된 대로 열 이름과 0으로 인덱싱된 열 번호로 인덱싱된 배열을 반환합니다. -
PDO::FETCH_BOUND
:true
를 반환하고 결과 집합의 열 값을 PDOStatement::bindColumn() 메서드로 바인딩된 PHP 변수에 할당합니다. -
PDO::FETCH_CLASS
:PDO::FETCH_PROPS_LATE
도 제공되지 않는 한 요청된 클래스의 새 인스턴스를 반환하고 결과 집합의 열을 클래스의 명명된 속성에 매핑하고 생성자를 나중에 호출합니다.mode
에 PDO::FETCH_CLASSTYPE이 포함된 경우(예:PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE
) 클래스 이름은 첫 번째 열의 값에서 결정됩니다. -
PDO::FETCH_INTO
: 요청된 클래스의 기존 인스턴스를 업데이트하여 결과 집합의 열을 클래스의 명명된 속성에 매핑합니다. -
PDO::FETCH_LAZY
:PDO::FETCH_BOTH
및PDO::FETCH_OBJ
를 결합하여 액세스할 때 개체 변수 이름을 만듭니다. -
PDO::FETCH_NAMED
:PDO::FETCH_ASSOC
와 동일한 형식의 배열을 반환합니다. 단, 동일한 이름의 열이 여러 개 있는 경우 해당 키가 참조하는 값은 해당 열 이름을 가진 행의 모든 값의 배열이 됩니다. -
PDO::FETCH_NUM
: 열 0에서 시작하여 결과 집합에 반환된 열 번호로 인덱싱된 배열을 반환합니다. -
PDO::FETCH_OBJ
: 결과 집합에 반환된 열 이름에 해당하는 속성 이름을 가진 익명 개체를 반환합니다. -
PDO::FETCH_PROPS_LATE
:PDO::FETCH_CLASS
와 함께 사용하면 해당 열 값에서 속성이 할당되기 전에 클래스의 생성자가 호출됩니다.
-
cursorOrientation
- 스크롤 가능한 커서를 나타내는 PDOStatement 개체의 경우 이 값은 호출자에게 반환될 행을 결정합니다. 이 값은
PDO::FETCH_ORI_*
상수 중 하나여야 하며 기본값은PDO::FETCH_ORI_NEXT
입니다. PDOStatement 객체에 대해 스크롤 가능한 커서를 요청하려면 PDO::prepare()로 SQL 문을 준비할 때PDO::ATTR_CURSOR
속성을PDO::CURSOR_SCROLL
로 설정해야 합니다. offset
cursor_orientation
매개변수가PDO::FETCH_ORI_ABS
로 설정된 스크롤 가능한 커서를 나타내는 PDOStatement 객체의 경우 이 값은 결과 집합에서 가져올 절대 행 수를 지정합니다.cursor_orientation
매개변수가PDO::FETCH_ORI_REL
로 설정된 스크롤 가능한 커서를 나타내는 PDOStatement 객체의 경우 이 값은 PDOStatement::fetch()가 호출되기 전에 커서 위치를 기준으로 페치할 행을 지정합니다.
반환 값
성공 시 이 함수의 반환 값은 가져오기 유형에 따라 다릅니다. 모든 경우에 실패 시 false
가 반환됩니다.
Examples
예제 #1 다른 가져오기 스타일을 사용하여 행 가져오기
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Exercise PDOStatement::fetch styles */
print("PDO::FETCH_ASSOC: ");
print("Return next row as an array indexed by column name\n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");
print("PDO::FETCH_BOTH: ");
print("Return next row as an array indexed by both column name and number\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");
print("PDO::FETCH_LAZY: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");
print("PDO::FETCH_OBJ: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->name;
print("\n");
?>
위의 예는 다음을 출력합니다.
PDO::FETCH_ASSOC: Return next row as an array indexed by column name Array ( [name] => apple [colour] => red ) PDO::FETCH_BOTH: Return next row as an array indexed by both column name and number Array ( [name] => banana [0] => banana [colour] => yellow [1] => yellow ) PDO::FETCH_LAZY: Return next row as an anonymous object with column names as properties PDORow Object ( [name] => orange [colour] => orange ) PDO::FETCH_OBJ: Return next row as an anonymous object with column names as properties kiwi
예제 #2 스크롤 가능한 커서로 행 가져오기
<?php
function readDataForwards($dbh) {
$sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET';
$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
$data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
print $data;
}
}
function readDataBackwards($dbh) {
$sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY bet';
$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
do {
$data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
print $data;
} while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR));
}
print "Reading forwards:\n";
readDataForwards($conn);
print "Reading backwards:\n";
readDataBackwards($conn);
?>
위의 예는 다음을 출력합니다.
Reading forwards: 21 10 5 16 0 5 19 20 10 Reading backwards: 19 20 10 16 0 5 21 10 5
예제 #3 Construction order
PDO::FETCH_CLASS
를 통해 개체를 가져올 때 개체 속성이 먼저 할당된 다음 클래스의 생성자가 호출됩니다. PDO::FETCH_PROPS_LATE
도 제공되면 이 순서가 반대로 됩니다. 즉, 먼저 생성자가 호출되고 그 후에 속성이 할당됩니다.
<?php
class Person
{
private $name;
public function __construct()
{
$this->tell();
}
public function tell()
{
if (isset($this->name)) {
echo "I am {$this->name}.\n";
} else {
echo "I don't have a name yet.\n";
}
}
}
$sth = $dbh->query("SELECT * FROM people");
$sth->setFetchMode(PDO::FETCH_CLASS, 'Person');
$person = $sth->fetch();
$person->tell();
$sth->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'Person');
$person = $sth->fetch();
$person->tell();
?>
위의 예는 다음과 유사한 결과를 출력합니다.
I am Alice. I am Alice. I don't have a name yet. I am Bob.
기타
- PDO::prepare() - 실행할 명령문을 준비하고 명령문 개체를 반환합니다.
- PDOStatement::execute() - 준비된 명령문을 실행합니다.
- PDOStatement::fetchAll() - 결과 집합에서 나머지 행을 가져옵니다.
- PDOStatement::fetchColumn() - 결과 집합의 다음 행에서 단일 열을 반환합니다.
- PDOStatement::fetchObject() - 다음 행을 가져와 객체로 반환
- PDOStatement::setFetchMode() - 이 명령문에 대한 기본 페치 모드를 설정합니다.