PHP: PDOStatement->setFetchMode() - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

phar PDOStatement->setAttribute()

Last updated: Sat, 27 Jan 2007

view this page in

# PDOStatement->setFetchMode()

(no version information, might be only in CVS)

PDOStatement->setFetchMode() -- Set the default fetch mode for this statement

## Описание

class PDOStatement {
bool setFetchMode ( int mode )
}class PDOStatement {
bool setFetchMode ( int PDO::FETCH_COLUMN, int colno )
}class PDOStatement {
bool setFetchMode ( int PDO::FETCH_CLASS, string classname, array ctorargs )
}class PDOStatement {
bool setFetchMode ( int PDO::FETCH_INTO, object object )
}

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

`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

add a note User Contributed Notes
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.`
add a note
phar PDOStatement->setAttribute()

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 11:33:19 2007 PST