Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Извлекает строку из результирующего набора.
Синтаксис
mixed PDOStatement::fetch ([ $fetch_style[, $cursor_orientation[, $cursor_offset]]] );
Параметры
$fetch_style: необязательный символ (целое число), указывающий формат строки данных. Список возможных значений для $fetch_style см. в разделе "Примечания". Значение по умолчанию — PDO::FETCH_BOTH. $fetch_style в методе "fetch" имеет более высокий приоритет, чем $fetch_style в PDO::query.
$cursor_orientation: необязательный символ (целое число), указывающий извлекаемую строку, когда в инструкции подготовки задано PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL. Список возможных значений для $cursor_orientation см. в разделе "Примечания". Пример использования прокручиваемого курсора см. в статье PDO::prepare .
$cursor_offset: необязательный символ (целое число), указывающий извлекаемую строку, когда $cursor_orientation имеет значение PDO::FETCH_ORI_ABS или PDO::FETCH_ORI_REL, а PDO::ATTR_CURSOR имеет значение PDO::CURSOR_SCROLL.
Возвращаемое значение
Смешанное значение, которое возвращает строку или значение false.
Замечания
Курсор автоматически перемещается вперед при вызове fetch. Следующая таблица содержит список возможных значений для $fetch_style.
| $fetch_style | Description |
|---|---|
| PDO::FETCH_ASSOC | Указывает массив, индексированный по имени столбца. |
| PDO::FETCH_BOTH | Указывает массив, индексированный по имени столбца и с отчетом от нуля. Это значение по умолчанию. |
| PDO::FETCH_BOUND | Возвращает значение true и присваивает значения, как указывает PDOStatement::bindColumn. |
| PDO::FETCH_CLASS | Создает экземпляр и сопоставляет столбцы с именованными свойствами. Вызовите PDOStatement::setFetchMode перед вызовом fetch. |
| PDO::FETCH_INTO | Обновляет экземпляр запрошенного класса. Вызовите PDOStatement::setFetchMode перед вызовом fetch. |
| PDO::FETCH_LAZY | Создает имена переменных во время доступа, а также объект без имени. |
| PDO::FETCH_NUM | Указывает массив, индексируемый по столбцам с отчетом от нуля. |
| PDO::FETCH_OBJ | Указывает объект без имени с именами свойств, сопоставленными с именами столбцов. |
Если курсор находится в конце результирующего набора (последняя строка была извлечена, и курсор вышел за границу результирующего набора) и является курсором последовательного доступа (PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY), последующий вызов fetch завершается с ошибкой.
Если курсор является прокручиваемым (PDO::ATTR_CURSOR = PDO::CURSOR_SCROLL), fetch перемещает курсор в пределах границ результирующего набора. Следующая таблица содержит список возможных значений для $cursor_orientation.
| $cursor_orientation | Description |
|---|---|
| PDO::FETCH_ORI_NEXT | Извлекает следующую строку. Это значение по умолчанию. |
| PDO::FETCH_ORI_PRIOR | Извлекает предыдущую строку. |
| PDO::FETCH_ORI_FIRST | Извлекает первую строку. |
| PDO::FETCH_ORI_LAST | Извлекает последнюю строку. |
| PDO::FETCH_ORI_ABS, номер | Извлекает строку, запрашиваемую в $cursor_offset, по номеру строки. |
| PDO::FETCH_ORI_REL, номер | Извлекает строку, запрашиваемую в $cursor_offset, по положению относительно текущей позиции. |
Если значение, указанное для $cursor_offset или $cursor_orientation, приводит к выходу за границу результирующего набора, метод "fetch" не срабатывает.
Добавлена поддержка PDO версии 2.0 драйверов Майкрософт для PHP для SQL Server.
Пример
<?php
$server = "(local)";
$database = "AdventureWorks";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "");
print( "\n---------- PDO::FETCH_CLASS -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
class cc {
function __construct( $arg ) {
echo "$arg";
}
function __toString() {
return $this->DepartmentID . "; " . $this->Name . "; " . $this->GroupName;
}
}
$stmt->setFetchMode(PDO::FETCH_CLASS, 'cc', array( "arg1 " ));
while ( $row = $stmt->fetch(PDO::FETCH_CLASS)) {
print($row . "\n");
}
print( "\n---------- PDO::FETCH_INTO -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
$c_obj = new cc( '' );
$stmt->setFetchMode(PDO::FETCH_INTO, $c_obj);
while ( $row = $stmt->fetch(PDO::FETCH_INTO)) {
echo "$c_obj\n";
}
print( "\n---------- PDO::FETCH_ASSOC -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_ASSOC );
print_r( $result );
print( "\n---------- PDO::FETCH_NUM -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_NUM );
print_r ($result );
print( "\n---------- PDO::FETCH_BOTH -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_BOTH );
print_r( $result );
print( "\n---------- PDO::FETCH_LAZY -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_LAZY );
print_r( $result );
print( "\n---------- PDO::FETCH_OBJ -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_OBJ );
print $result->Name;
print( "\n \n" );
print( "\n---------- PDO::FETCH_BOUND -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$stmt->bindColumn('Name', $name);
$result = $stmt->fetch( PDO::FETCH_BOUND );
print $name;
print( "\n \n" );
?>