Some note on PDO :: FETCH_CLASS | PDO :: FETCH_CLASSTYPE
It took me some time, to realize, that you can not use this fetch-mode in $stm->setFetchMode(), when you want to retrieve objects from the database whereas the type is defined by the first column in the resultset.
You have to define this mode directly in the $stm->fetch() method.
To make it clearer:
$stm = $pdo->query("SELECT * FROM `foo`);
$stm->setFetchMode(FETCH_CLASS | PDO :: FETCH_CLASSTYPE);
$object = $stm->fetch();
Will not return the expected object, whereas
$stm = $pdo->query("SELECT * FROM `foo`");
$object = $stm->fetch(FETCH_CLASS | PDO :: FETCH_CLASSTYPE);
will give you the object of the class, defined in the first column of `foo`.
PDOStatement->setFetchMode()
(PHP 5 >= 5.1.0, PECL pdo:0.2-1.0.3)
PDOStatement->setFetchMode() — Set the default fetch mode for this statement
Description
PDOStatement
bool setFetchMode
( int $mode
)
PDOStatement
bool setFetchMode
( int $PDO::FETCH_COLUMN
, int $colno
)
PDOStatement
bool setFetchMode
( int $PDO::FETCH_CLASS
, string $classname
, array $ctorargs
)
PDOStatement
bool setFetchMode
( int $PDO::FETCH_INTO
, object $object
)
Parameters
- mode
-
The fetch mode must be one of the PDO::FETCH_* constants.
Return Values
Returns 1 on success or FALSE on failure.
Examples
Example#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();
}
?>
The above example will output:
apple red 150 banana yellow 250 orange orange 300 kiwi brown 75 lemon yellow 25 pear green 150 watermelon pink 90
PDOStatement->setFetchMode()
stein_AT_rhrk.uni-kl.de
20-Nov-2007 01:04
20-Nov-2007 01:04
