Поделиться через


PDOStatement::fetch

Скачать драйвер PHP

Извлекает строку из результирующего набора.

Синтаксис

  
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" );  
?>  

См. также

Класс PDOStatement

PDO