Condividi tramite


PDOStatement::fetch

Download del driver PHP

Recupera una riga da un set di risultati.

Sintassi

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

Parametri

$fetch_style: simbolo (intero) facoltativo che specifica il formato dei dati della riga. Vedere la sezione Osservazioni per l'elenco dei valori possibili per $fetch_style. Il valore predefinito è PDO::FETCH_BOTH. $fetch_style nel metodo di recupero esegue l'override di $fetch_style specificato nel metodo PDO::query.

$cursor_orientation: simbolo (intero) facoltativo che indica la riga da recuperare quando l'istruzione prepare specifica PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL. Vedere la sezione Osservazioni per l'elenco dei possibili valori per $cursor_orientation. Vedere PDO::prepare per un esempio di uso di un cursore scorrevole.

$cursor_offset: simbolo (intero) facoltativo che specifica la riga da recuperare quando $cursor_orientation è PDO::FETCH_ORI_ABS o PDO::FETCH_ORI_REL e PDO::ATTR_CURSOR è PDO::CURSOR_SCROLL.

Valore restituito

Valore misto che restituisce una riga o false.

Osservazioni:

Il cursore viene spostato automaticamente in avanti quando si chiama un'operazione di recupero. Nella tabella seguente sono elencati i valori possibili di $fetch_style.

$fetch_style Descrizione
PDO::FETCH_ASSOC Specifica una matrice indicizzata in base al nome della colonna.
PDO::FETCH_BOTH Specifica una matrice indicizzata in base al nome della colonna e all'ordine in base 0. Si tratta dell'impostazione predefinita.
PDO::FETCH_BOUND Restituisce true e assegna i valori come specificato da PDOStatement::bindColumn.
PDO::FETCH_CLASS Crea un'istanza ed esegue il mapping delle colonne sulle proprietà denominate.

Chiamare PDOStatement::setFetchMode prima di chiamare il recupero.
PDO::FETCH_INTO Aggiorna un'istanza della classe richiesta.

Chiamare PDOStatement::setFetchMode prima di chiamare il recupero.
PDO::FETCH_LAZY Crea i nomi delle variabili durante l'accesso e crea un oggetto senza nome.
PDO::FETCH_NUM Specifica una matrice indicizzata con l'ordine in base zero della colonna.
PDO::FETCH_OBJ Specifica un oggetto senza nome con i nomi delle proprietà che eseguono il mapping sui nomi delle colonne.

Se il cursore si trova alla fine del set di risultati (l'ultima riga è stata recuperata e il cursore spostato oltre il limite del set di risultati) e se il cursore è forward-only (PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY), le successive chiamate di recupero avranno esito negativo.

Se il cursore è scorrevole (PDO::ATTR_CURSOR = PDO::CURSOR_SCROLL), le chiamate di recupero sposteranno il cursore all'interno del limite del set di risultati. Nella tabella seguente sono elencati i valori possibili di $cursor_orientation.

$cursor_orientation Descrizione
PDO::FETCH_ORI_NEXT Recupera la riga seguente. Si tratta dell'impostazione predefinita.
PDO::FETCH_ORI_PRIOR Recupera la riga precedente.
PDO::FETCH_ORI_FIRST Recupera la prima riga.
PDO::FETCH_ORI_LAST Recupera l'ultima riga.
PDO::FETCH_ORI_ABS, num Recupera la riga richiesta in $cursor_offset in base al numero di riga.
PDO::FETCH_ORI_REL, num Recupera la riga richiesta in $cursor_offset in base alla posizione relativa rispetto alla posizione corrente.

Se il valore specificato per $cursor_offset o $cursor_orientation corrisponde a una posizione al di fuori del limite del set di risultati, il recupero avrà esito negativo.

Il supporto per PDO è stato aggiunto nella versione 2.0 dei driver Microsoft per PHP per SQL Server.

Esempio

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

Vedi anche

Classe PDOStatement

PDO