PDOStatement::setFetchMode

(no version information, might be only in CVS)

PDOStatement::setFetchMode --  Set the default fetch mode for this statement

Описание

bool PDOStatement::setFetchMode ( int mode )

Список параметров

mode

The fetch mode must be one of the PDO::FETCH_* constants.

Возвращаемые значения

Returns 1 on success or FALSE on failure.

Примеры

Пример 1. Setting the fetch mode

The following example demonstrates how PDOStatement::setFetchMode() changes the default fetch mode for a PDOStatement object.

<?php
$sql
= 'SELECT name, colour, calories FROM fruit';
try {
 
$stmt = $dbh->query($sql);
 
$result = $stmt->setFetchMode(PDO::FETCH_NUM);
  while (
$row = $stmt->fetch()) {
   print
$row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
  }
}
catch (
PDOException $e) {
  print
$e->getMessage();
}
?>

Результат выполнения данного примера:

apple   red     150
banana  yellow  250
orange  orange  300
kiwi    brown   75
lemon   yellow  25
pear    green   150
watermelon      pink    90



PDOStatement::setFetchMode
matt at kynx dot org
18-Feb-2006 03:13
To fetch the rows into an existing instance of a class, use PDO::FETCH_INTO and pass the object as the second parameter.

The class _must_ have the column names declared as public members, or the script will die. But overloading with __set() and __get() lets it handle any column your query throws at it. 

Set the fetch mode right after you call prepare(). It appears you _must_ use execute() - fetch() won't work. A small example, adapted from ext/pdo/tests/pdo_025.phpt:

<?php
class Test
{
   protected
$cols;
  
   function
__set($name, $value) {
      
$this->cols[$name] = $value;
   }
  
   function
__get($name) {
       return
$this->cols[$name];
   }
}

$obj = new Test();
$db = PDOTest::factory();
$stmt = $db->prepare("select * from test");
$stmt->setFetchMode(PDO::FETCH_INTO, $obj);
$stmt->execute();

foreach (
$stmt as $a) {
  
print_r($a);
}

print_r($obj); // contains the same values as the last iteration above
?>
Dariusz Kielar
12-Feb-2006 10:55
PDO::FETCH_CLASS may be used only with this method and it takes up to three parameters then:
 - int mode
 - string className
 - array constructorArgs (optional)

<?php
$stmt
= $pdo -> query('your query');
$stmt -> setFetchMode(PDO::FETCH_CLASS, 'yourClass', array(0 => false));

while(
$row = $stmt -> fetch())
{
  
// $row is an object of "yourClass" class
}
$stmt -> closeCursor();
?>

Note also that the constructor is called AFTER the data is set on the object.

<PDOStatement::setAttributePHP Options/Info>
 Last updated: Tue, 15 Nov 2005