PHP 8.4.0 RC4 available for testing

PDOStatement::setFetchMode

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDOStatement::setFetchModeDeyim için öntanımlı veri alım kipini belirler

Açıklama

public PDOStatement::setFetchMode(int $kip): bool
public PDOStatement::setFetchMode(int $kip = PDO::FETCH_COLUMN, int $sütunnum): bool
public PDOStatement::setFetchMode(int $kip = PDO::FETCH_CLASS, string $sınıfadı, ?array $bağımsız_değişkenler = null): bool
public PDOStatement::setFetchMode(int $kip = PDO::FETCH_INTO, object $nesne): bool

Bağımsız Değişkenler

kip

PDO::FETCH_* sabitlerinden biri olarak veri alım kipi.

sütunnum

Sütun numarası.

sınıfadı

Sınıf adı.

bağımsız_değişkenler

Kurucu bağımsız değişkenleri.

nesne

Nesne.

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Örnekler

Örnek 1 - Veri alım kipinin belirlenmesi

Aşağıdaki örnekte bir PDOStatement nesnesinin veri alım kipinin PDOStatement::setFetchMode() ile nasıl değiştirileceği gösterilmiştir.

<?php
$stmt
= $dbh->query('SELECT name, colour, calories FROM fruit');
$stmt->setFetchMode(PDO::FETCH_NUM);
foreach (
$stmt as $row) {
print
$col[0] . "\t" . $col[1] . "\t" . $col[2] . "\n";
}
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

elma      kırmızı     150
muz       sarı        250
portakal  turuncu     300
kivi      kahverengi  75
limon     sarı        25
armut     yeşil       150

add a note

User Contributed Notes 3 notes

up
35
Dormilich at netscape dot net
14 years ago
if you want to fetch your result into a class (by using PDO::FETCH_CLASS) and want the constructor to be executed *before* PDO assings the object properties, you need to use the PDO::FETCH_PROPS_LATE constant:

<?php
$stmt
= $pdo->prepare("your query");

$stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, "className", $constructorArguments);

# pass parameters, if required by the query
$stmt->execute($parameters);

foreach (
$stmt as $row)
{
// do something with (each of) your object
}
?>
up
9
Kats
7 years ago
Something very helpful is knowing how to access namespaces from the function. It took me a minute (and Google) to figure out. The ::class property is going to be your best friend in this case.

<?php
$stmt
->setFetchMode(PDO::FETCH_CLASS, Name\Space\Class::class);
?>
up
2
stein_AT_rhrk.uni-kl.de
16 years ago
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`.
To Top