PDOStatement::fetch

DownloadDownload PHP Driver

Retrieves a row from a result set.

Syntax


mixed PDOStatement::fetch ([ $fetch_style[, $cursor_orientation[, $cursor_offset]]] );  

Parameters

$fetch_style: An optional (integer) symbol specifying the format of the row data. See the Remarks section for the list of possible values for $fetch_style. Default is PDO::FETCH_BOTH. $fetch_style in the fetch method will override the $fetch_style specified in the PDO::query method.

$cursor_orientation: An optional (integer) symbol indicating the row to retrieve when the prepare statement specifies PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL. See the Remarks section for the list of possible values for $cursor_orientation. See PDO::prepare for a sample using a scrollable cursor.

$cursor_offset: An optional (integer) symbol specifying the row to fetch when $cursor_orientation is either PDO::FETCH_ORI_ABS or PDO::FETCH_ORI_REL and PDO::ATTR_CURSOR is PDO::CURSOR_SCROLL.

Return Value

A mixed value that returns a row or false.

Remarks

The cursor is automatically advanced when fetch is called. The following table contains the list of possible $fetch_style values.

$fetch_style Description
PDO::FETCH_ASSOC Specifies an array indexed by column name.
PDO::FETCH_BOTH Specifies an array indexed by column name and 0-based order. This is the default.
PDO::FETCH_BOUND Returns true and assigns the values as specified by PDOStatement::bindColumn.
PDO::FETCH_CLASS Creates an instance and maps columns to named properties.

Call PDOStatement::setFetchMode before calling fetch.
PDO::FETCH_INTO Refreshes an instance of the requested class.

Call PDOStatement::setFetchMode before calling fetch.
PDO::FETCH_LAZY Creates variable names during access and creates an unnamed object.
PDO::FETCH_NUM Specifies an array indexed by zero-based column order.
PDO::FETCH_OBJ Specifies an unnamed object with property names that map to column names.

If the cursor is at the end of the result set (the last row has been retrieved and the cursor has advanced past the result set boundary) and if the cursor is forward-only (PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY), subsequent fetch calls will fail.

If the cursor is scrollable (PDO::ATTR_CURSOR = PDO::CURSOR_SCROLL), fetch will move the cursor within the result set boundary. The following table contains the list of possible $cursor_orientation values.

$cursor_orientation Description
PDO::FETCH_ORI_NEXT Retrieves the next row. This is the default.
PDO::FETCH_ORI_PRIOR Retrieves the previous row.
PDO::FETCH_ORI_FIRST Retrieves the first row.
PDO::FETCH_ORI_LAST Retrieves the last row.
PDO::FETCH_ORI_ABS, num Retrieves the row requested in $cursor_offset by row number.
PDO::FETCH_ORI_REL, num Retrieves the row requested in $cursor_offset by relative position from the current position.

If the value specified for $cursor_offset or $cursor_orientation results in a position outside result set boundary, fetch will fail.

Support for PDO was added in version 2.0 of the Microsoft Drivers for PHP for SQL Server.

Example

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

See Also

PDOStatement Class
PDO