PHP.mk документација

Режими на преземање

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

pdo.constants.fetch-modes.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека pdo.constants.fetch-modes.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
Режими на преземање

Референца за `pdo.constants.fetch-modes.php` со подобрена типографија и навигација.

pdo.constants.fetch-modes.php

Режими на преземање

Константи за известување за грешки константи на курсорот » PEAR PDO::FETCH_ORI_* константи на курсорот.

Основни режими на преземање

Режим на преземање Резиме
PDO::FETCH_DEFAULT Специјална вредност за користење на тековниот стандарден режим на преземање.
PDO::FETCH_ASSOC Низа индексирана само по име на колона.
PDO::FETCH_BOTH (Стандардно) Низа индексирана и по број и по име на колона.
PDO::FETCH_NAMED Варијанта на PDO::FETCH_ASSOC што задржува дупликат колони.
PDO::FETCH_NUM Низа индексирана само по број на колона.
PDO::FETCH_COLUMN Една колона.
PDO::FETCH_KEY_PAIR Парови клуч-вредност, индексирани по првата колона.
PDO::FETCH_FUNC Користи функција за креирање на вредноста за враќање. (. Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот. само)
PDO::FETCH_OBJ Анонимен (stdClass) објект.
PDO::FETCH_CLASS Објект од одредена класа.

PDO::FETCH_CLASS опции

Овие режими се користат за имплементирање опции при користење PDO::FETCH_CLASS.

Режим на преземање Резиме
PDO::FETCH_CLASSTYPE Користете ја првата колона како име на класата.
PDO::FETCH_PROPS_LATE Повикајте го конструкторот пред да ги поставите својствата.
PDO::FETCH_SERIALIZE Користете PHP серијализирани податоци. Застарено од PHP 8.1.0.

Режими за еден резултат

Следниве режими не може да се користат со . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот..

Режим на преземање Резиме
PDO::FETCH_BOUND Поврзете вредности со наведените променливи.
PDO::FETCH_INTO Ажурирајте постоечки објект.
PDO::FETCH_LAZY Мрзливо земање преку PDORow за пристап како низа и објект.

Специјални знаменца за однесување за . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот.

Следниве специјални режими за повеќе резултати работат само со . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот. и не работат со некои други режими за земање. Проверете ја целосната документација за детали.

Режим на преземање Резиме
PDO::FETCH_GROUP Резултатите се групирани по првата колона.
PDO::FETCH_UNIQUE Резултатите се (уникатно) индексирани по првата колона.

Ракување со дупликат имиња на колони

Можно е резултатите да содржат повеќе колони што користат исто име. На пример, при спојување на 2 табели што и двете содржат колона со исто име.

Бидејќи PHP структурите како што се низи и објекти не поддржуваат повеќе клучеви или својства што користат исто име, вратената низа или објект ќе содржи само 1 од вредностите што го користат истото име.

Која вредност ќе се врати за дадено дупликатно име треба да се смета за недефинирана.

За да се избегне овој проблем, експлицитно именувајте ги колоните користејќи алијас. На пример:

SELECT table1.created_at AS t1_created_at,
       table2.created_at AS t2_created_at
FROM table1
JOIN table2 ON table1.table2id = table2.id

Види исто така PDO::FETCH_NAMED, PDO::ATTR_FETCH_TABLE_NAMES and PDO::ATTR_FETCH_CATALOG_NAMES.

Поставување на стандарден режим на преземање

Можно е да се постави стандарден режим на преземање за сите прашања користејќи PDO::ATTR_DEFAULT_FETCH_MODE with Пример #1 Креирајте PDO инстанца и поставете го режимот за грешки or Имајте предвид дека атрибутите специфични за драјверот.

Стандардниот режим на преземање за одредена изјава може да се постави со користење на Следниот пример покажува како. Ова влијае на повторното користење како подготвена изјава и итерација (користејќи foreach).

Безбедност: стандардниот сет на знаци

PDOStatement::setAttribute() не може да се користи за поставување на стандардниот режим на преземање. Прифаќа само атрибути специфични за драјверот и тивко ги игнорира атрибутите што не се препознаени.

PDO::FETCH_DEFAULT (int)

Достапно од PHP 8.0.7.

Ова е специјална вредност што го користи тековниот стандарден режим на преземање за PDOStatement. Особено е корисно како стандардна вредност за параметрите на методите при проширување PDOStatement за употреба со PDO::ATTR_STATEMENT_CLASS.

Оваа вредност не може да се користи со PDO::ATTR_DEFAULT_FETCH_MODE.

PDO::FETCH_ASSOC (int)

PDO::FETCH_ASSOC враќа низа индексирана само по име на колона.

<?php
$stmt
= $pdo->query("SELECT userid, name, country FROM users");
$row = $stmt->fetch(\PDO::FETCH_ASSOC);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [userid] => 104
    [name] => Chris
    [country] => Ukraine
)

PDO::FETCH_BOTH (int)

Ова е стандардниот режим на преземање.

PDO::FETCH_BOTH враќа низа индексирана и по број на колона и по име. Ова значи дека секоја вратена вредност се дуплира за секој ред од резултатот.

The column number starts at 0 and is determined by the result column order in the query, not (for example) the order columns are defined in the table.

Забелешка: Бројот на колоната започнува од 0 и се одредува според редоследот на колоните во резултатот од прашањето, а не (на пример) според редоследот на колоните дефинирани во табелата. SELECT *.

Забелешка: Не се препорачува користење на нумерички индекс на колона бидејќи ова може да се промени кога ќе се промени прашањето, или кога ќе се промени шемата на табелата кога се користи

<?php
$stmt
= $pdo->query("SELECT userid, name, country FROM users");
$row = $stmt->fetch(\PDO::FETCH_BOTH);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [id] => 104,
    [0] => 104,
    [name] => Chris,
    [1] => Chris,
    [country] => Ukraine,
    [2] => Ukraine
)

Бројот на записи индексирани по име може да не се совпаѓа со бројот на записи индексирани по број во случаи кога повеќе вратени колони користат исто име.int)

PDO::FETCH_NAMED PDO::FETCH_NAMED ( PDO::FETCH_ASSOC враќа резултати во истиот формат како

освен што каде што повеќе колони користат исто име, сите вредности се враќаат како листа. За повеќе информации за ракување со дупликат имиња на колони и алтернативи, видете го above.

делот за ракување со дупликат имиња

<?php
$stmt
= $pdo->query(
"SELECT users.*, referrer.name
FROM users
LEFT JOIN users AS referrer ON users.referred_by = referrer.userid
WHERE userid = 109"
);
$row = $stmt->fetch(\PDO::FETCH_NUM);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [userid] => 109
    [name] => Array
        (
            [0] => Toni
            [1] => Chris
        )
    [country] => Germany
    [referred_by] = 104
)

Редоследот по кој се враќаат дупликат вредности треба да се смета за недефиниран. Нема начин да се знае од каде доаѓа секоја вредност.int)

PDO::FETCH_NUM PDO::FETCH_NUM (

Забелешка: Бројот на колоната започнува од 0 и се одредува според редоследот на колоните во резултатот од прашањето, а не (на пример) според редоследот на колоните дефинирани во табелата. SELECT *.

<?php
$stmt
= $pdo->query("SELECT userid, name, country FROM users");
$row = $stmt->fetch(\PDO::FETCH_NUM);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [0] => 104
    [1] => Chris
    [2] => Ukraine
)

враќа низа индексирана само по број на колона. Бројот на колоната започнува од 0 и се одредува според редоследот на колоните во резултатот од прашањето, а не (на пример) според редоследот на колоните дефинирани во табелата.int)

PDO::FETCH_COLUMN PDO::FETCH_COLUMN ( Следниот пример покажува како or . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот. враќа вредности од една колона. Користете го вториот аргумент за

да се специфицира која колона се враќа. ValueError ќе биде фрлена.

<?php
$stmt
= $pdo->query("SELECT name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_COLUMN);
print_r($row);

$stmt = $pdo->query("SELECT name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_COLUMN, 1);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [0] => Chris
    [1] => Jamie
    [2] => Robin
)

Array
(
    [0] => Ukraine
    [1] => England
    [2] => Germany
)

Ако наведената колона не постои,int)

PDO::FETCH_KEY_PAIR PDO::FETCH_KEY_PAIR ( . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот..

Забелешка: враќа парови вредности, индексирани од првата колона. Резултатите мора да содржат само 2 колони. Овој режим на преземање има смисла само со

<?php
$stmt
= $pdo->query("SELECT name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_KEY_PAIR);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [Chris] => Ukraine
    [Jamie] => England
    [Robin] => Germany
)

Ако првата колона не е единствена, вредностите ќе бидат изгубени. Кои вредности ќе бидат изгубени треба да се сметаат за недефинирани.int)

PDO::FETCH_FUNC ( . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот..

The function receives the values as parameters. There's no way to retrieve the column name a given value was associated with. It is crucial to ensure that the column order in the query matches the order of parameters of the function.

Забелешка: Функцијата ги прима вредностите како параметри. Нема начин да се добие името на колоната со која е поврзана дадена вредност. Од клучно значење е да се осигурате дека редоследот на колоните во прашањето одговара на редоследот на параметрите на функцијата. PDO::FETCH_GROUP and PDO::FETCH_UNIQUE Ефектите од

<?php
function valueCreator($col1, $col2, $col3)
{
return [
'col1' => $col1,
'col2' => strtoupper($col2),
'col3' => $col3,
'customKey' => 'customValue',
];
}

$stmt = $pdo->query("SELECT userid, name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_FUNC, valueCreator(...));
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [0] => Array
        (
            [col1] => 104
            [col2] => SAM
            [col3] => Ukraine
            [customKey] => customValue
        )

    [1] => Array
        (
            [col1] => 105
            [col2] => JAMIE
            [col3] => England
            [customKey] => customValue
        )

    [2] => Array
        (
            [col1] => 107
            [col2] => ROBIN
            [col3] => Germany
            [customKey] => customValue
        )

)

се применуваат на резултатите пред да се повика функцијата.int)

PDO::FETCH_OBJ враќа stdClass object.

Види исто така PDO::FETCH_OBJ ( and PDO::FETCH_CLASS.

<?php
$stmt
= $pdo->query("SELECT userid, name, country FROM users");
$row = $stmt->fetch(\PDO::FETCH_OBJ);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

stdClass Object
(
    [userid] => 104
    [name] => Chris
    [country] => Ukraine
)

PDOStatement::fetchObject()int)

PDO::FETCH_CLASS ( Враќа објект од одредена класа. За дополнителни однесувања видете ги.

знаменцата за опции

Види исто така PDO::FETCH_OBJ (.

<?php
class TestEntity
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;

public function
__construct()
{
print
"Constructor called with ". count(func_get_args()) ." args\n";
print
"Properties set when constructor called? "
. (isset($this->name) ? 'Yes' : 'No') . "\n";
}
}

$stmt = $db->query(
"SELECT userid, name, country, referred_by_userid FROM users"
);
$stmt->setFetchMode(PDO::FETCH_CLASS, TestEntity::class);
$result = $stmt->fetch();
var_dump($result);

Горниот пример ќе прикаже нешто слично на:

Constructor called with 0 args
Properties set when constructor called? Yes
object(TestEntity)#3 (4) {
  ["userid"]=>
  int(104)
  ["name"]=>
  string(5) "Chris"
  ["country"]=>
  string(7) "Ukraine"
  ["referred_by_userid"]=>
  NULL
}

Ако не постои својство со името на вратена колона, тоа ќе биде динамички декларирано. Ова однесување е застарено и ќе предизвика грешка од PHP 9.0.int)

PDO::FETCH_CLASSTYPE ( PDO::FETCH_CLASSОвој режим на преземање може да се користи само во комбинација со).

неговите други опции

Кога се користи овој режим на преземање, PDO ќе ја користи првата вратена колона како име на класата што треба да се врати. stdClass Ако наведената класа не може да се најде, ќе се врати

<?php
class TestEntity
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;

public function
__construct()
{
print
"Constructor called with ". count(func_get_args()) ." args\n";
print
"Properties set when constructor called? "
. (isset($this->name) ? 'Yes' : 'No') . "\n";
}
}

$stmt = $db->query(
"SELECT 'TestEntity', userid, name, country, referred_by_userid FROM users"
);
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE);
$result = $stmt->fetch();
var_dump($result);

Горниот пример ќе прикаже нешто слично на:

Constructor called with 0 args
Properties set when constructor called? Yes
object(TestEntity)#3 (4) {
  ["userid"]=>
  int(104)
  ["name"]=>
  string(5) "Chris"
  ["country"]=>
  string(7) "Ukraine"
  ["referred_by_userid"]=>
  NULL
}

објект, без предупредување или грешка.int)

PDO::FETCH_CLASSTYPE ( PDO::FETCH_CLASSОвој режим на преземање може да се користи само во комбинација со).

PDO::FETCH_PROPS_LATE (

<?php
class TestEntity
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;

public function
__construct()
{
print
"Constructor called with ". count(func_get_args()) ." args\n";
print
"Properties set when constructor called? "
. (isset($this->name) ? 'Yes' : 'No') . "\n";
}
}

$stmt = $db->query(
"SELECT userid, name, country, referred_by_userid FROM users"
);
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, TestEntity::class);
$result = $stmt->fetch();
var_dump($result);

Горниот пример ќе прикаже нешто слично на:

Constructor called with 0 args
Properties set when constructor called? No
object(TestEntity)#3 (4) {
  ["userid"]=>
  int(104)
  ["name"]=>
  string(5) "Chris"
  ["country"]=>
  string(7) "Ukraine"
  ["referred_by_userid"]=>
  NULL
}

Кога се користи овој режим на преземање, конструкторот ќе биде повикан пред да се постават својствата.int)

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Претходната порака за грешка DEPRECATED PDO::FETCH_SERIALIZE (

PDO::FETCH_CLASSTYPE ( PDO::FETCH_CLASSОвој режим на преземање може да се користи само во комбинација со).

од PHP 8.1.0. Силно се обесхрабрува потпирањето на оваа функција. Countable.

Безбедност: стандардниот сет на знаци

This feature does not support a string that contains a complete serialized object (with serialize()).

Безбедност: стандардниот сет на знаци

Оваа функција не поддржува стринг што содржи целосно серијализиран објект (со

<?php
class TestEntity implements Serializable
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;

public function
__construct()
{
print
"Constructor called with " . count(func_get_args()) . " args\n";
print
"Properties set when constructor called? "
. (isset($this->name) ? 'Yes' : 'No') . "\n";
}

public function
serialize()
{
return
join(
"|",
[
$this->userid, $this->name, $this->country, $this->referred_by_userid]
);
}

public function
unserialize(string $data)
{
$parts = explode("|", $data);
$this->userid = (int) $parts[0];
$this->name = $parts[1];
$this->country = $parts[2];

$refId = $parts[3];
$this->referred_by_userid = ($refId === "" ? null : (int) $refId);
}
}

print
"Set up record (constructor called manually):\n";
$db->exec(
"CREATE TABLE serialize (
sdata TEXT
)"
);

$origObj = new TestEntity();
$origObj->userid = 200;
$origObj->name = 'Seri';
$origObj->country = 'Syria';
$origObj->referred_by_userid = null;

$insert = $db->prepare("INSERT INTO serialize (sdata) VALUES (:sdata)");
$insert->execute(['sdata' => $origObj->serialize()]);

print
"\nRetrieve result:\n";
$query = "SELECT sdata FROM serialize";
$stmt = $db->query($query);
// NOTE: Constructor is never called!
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_SERIALIZE, TestEntity::class);
$result = $stmt->fetch();
var_dump($result);

Горниот пример ќе прикаже нешто слично на:

Deprecated: TestEntity implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 2
Set up record (constructor called manually):
Constructor called with 0 args
Properties set when constructor called? No

Retrieve result:
Deprecated: PDOStatement::setFetchMode(): The PDO::FETCH_SERIALIZE mode is deprecated in Standard input code on line 58

Deprecated: PDOStatement::fetch(): The PDO::FETCH_SERIALIZE mode is deprecated in Standard input code on line 59
object(TestEntity)#5 (4) {
  ["userid"]=>
  int(200)
  ["name"]=>
  string(4) "Seri"
  ["country"]=>
  string(5) "Syria"
  ["referred_by_userid"]=>
  NULL
}

Овој режим на преземање не го повикува конструкторот.int)

PDO::FETCH_BOUND ( . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот..

Овој режим на преземање не може да се користи со и ги доделува вредностите на колоните во вашето множество резултати на PHP променливите на кои биле поврзани соОвој режим на преземање не враќа директно резултат, туку ги врзува вредностите со променливи наведени со true.

Забелешка: . Преземениот метод за преземање враќа

<?php
$query
= "SELECT users.userid, users.name, users.country, referrer.name
FROM users
LEFT JOIN users AS referrer ON users.referred_by_userid = referrer.userid"
;
$stmt = $db->prepare($query);
$stmt->execute();

$stmt->bindColumn('userid', $userId);
$stmt->bindColumn('name', $name);
$stmt->bindColumn('country', $country);
// Bind by column position to resolve duplicated column name
// To avoid this breaking if the query is changed, use an SQL alias instead
// For example: referrer.name AS referrer_name
$stmt->bindColumn(4, $referrerName);

while (
$stmt->fetch(\PDO::FETCH_BOUND)) {
print
join("\t", [$userId, $name, $country, ($referrerName ?? 'NULL')]) . "\n";
}

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

104	Chris	Ukraine	NULL
105	Jamie	England	NULL
107	Robin	Germany	Chris
108	Sean	Ukraine	NULL
109	Toni	Germany	NULL
110	Toni	Germany	NULL

Кога се користат подготвени изјави, за да работат правилно, променливите мора да бидат врзани по извршувањето на прашањето.int)

PDO::FETCH_BOUND ( . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот..

PDO::FETCH_INTO (

знаменцата за опции

Овој режим на преземање ги ажурира својствата во наведениот објект. Објектот се враќа при успех. public Својствата мора да бидат readonly.

Безбедност: стандардниот сет на знаци

и не може да бидат Следниот пример покажува како Нема начин да се промени објектот што треба да се ажурира без да се користи

<?php
class TestEntity
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;
}

$obj = new TestEntity();
$stmt->setFetchMode(\PDO::FETCH_INTO, $obj);

$stmt = $db->query("SELECT userid, name, country, referred_by_userid FROM users");
$result = $stmt->fetch();
var_dump($result);

Горниот пример ќе прикаже нешто слично на:

object(TestEntity)#3 (4) {
  ["userid"]=>
  int(104)
  ["name"]=>
  string(5) "Chris"
  ["country"]=>
  string(7) "Ukraine"
  ["referred_by_userid"]=>
  NULL
}

помеѓу преземањето на секој запис.int)

PDO::FETCH_BOUND ( . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот..

PDO::FETCH_LAZY ( PDORow Овој режим на преземање враќа PDO::FETCH_BOTH and PDO::FETCH_OBJобјект што обезбедува пристап до вредностите како низа и како објект (т.е. ги комбинира однесувањата на

), преземени на мрзлив начин.

Безбедност: стандардниот сет на знаци

PDORow ќе врати NULL Ова може да обезбеди ефикасен пристап до меморијата (од страната на PHP) до резултати без баферирање на серверот на базата на податоци. Дали PDO користи баферирање од страната на клиентот за резултати зависи од специфичниот драјвер на базата на податоци што се користи (и неговата конфигурација).

Безбедност: стандардниот сет на знаци

Вратениот PDORow без никаква грешка или предупредување при пристап до својства или клучеви што не се дефинирани. Ова може да ги направи грешките како што се печатни грешки или прашања што не враќаат очекувани податоци потешки за откривање и отстранување грешки.

<?php
$stmt
= $db->query("SELECT userid, name, country, referred_by_userid FROM users");
$result = $stmt->fetch(\PDO::FETCH_LAZY);

print
"ID: ". $result[0] ."\n";
print
"Name: {$result->name}\n";
print
"Country: " . $result['country'] ."\n";
// Returns NULL. No warning or error is raised.
print "Does not exist: " . var_export($result->does_not_exist, true) . "\n";

$differentResult = $stmt->fetch(\PDO::FETCH_LAZY);
// The previously retrieved PDORow now points to the newly retrieved result
print "ID: ". $result[0] ."\n";

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

ID: 104
Name: Chris
Country: Ukraine
Does not exist: NULL
ID: 105

PDO::FETCH_GROUP (int)

PDO::FETCH_GROUP враќа списоци од асоцијативни низи, индексирани по (неуникатна) колона. Овој режим на преземање работи само со . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот..

Кога е комбинирано со PDO::FETCH_UNIQUE, двата режими ќе ја користат истата колона, правејќи ја комбинацијата од овие режими бескорисна.

Ова преземање треба да се комбинира со едно од PDO::FETCH_ASSOC, PDO::FETCH_BOTH, PDO::FETCH_NAMED, PDO::FETCH_NUM, PDO::FETCH_COLUMN or PDO::FETCH_FUNC.

Ако не е даден режим на преземање од горната листа, тековниот стандарден режим на преземање за PDOStatement ќе се користи.

<?php
$stmt
= $pdo->query("SELECT country, userid, name FROM users");
$row = $stmt->fetchAll(\PDO::FETCH_GROUP | \PDO::FETCH_ASSOC);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [Ukraine] => Array
        (
            [0] => Array
                (
                    [userid] => 104
                    [name] => Chris
                )

            [1] => Array
                (
                    [userid] => 108
                    [name] => Sean
                )

        )
    [England] => Array
        (
            [0] => Array
                (
                    [userid] => 105
                    [name] => Jamie
                )

        )

    [Germany] => Array
        (
            [0] => Array
                (
                    [userid] => 107
                    [name] => Robin
                )

            [1] => Array
                (
                    [userid] => 109
                    [name] => Toni
                )
        )
)

Во горниот пример треба да се забележи дека првата колона е изоставена од низата за секој ред, достапна само како клуч. Таа може да се вклучи со повторување на колоната, како во следниот пример:

<?php
$stmt
= $pdo->query("SELECT country, userid, name, country FROM users");
$row = $stmt->fetchAll(\PDO::FETCH_GROUP | \PDO::FETCH_ASSOC);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [Ukraine] => Array
        (
            [0] => Array
                (
                    [userid] => 104
                    [name] => Chris
                    [country] => Ukraine
                )

            [1] => Array
                (
                    [userid] => 108
                    [name] => Sean
                    [country] => Ukraine
                )

        )
    [England] => Array
        (
            [0] => Array
                (
                    [userid] => 105
                    [name] => Jamie
                    [country] => England
                )

        )

    [Germany] => Array
        (
            [0] => Array
                (
                    [userid] => 107
                    [name] => Robin
                    [country] => Germany
                )

            [1] => Array
                (
                    [userid] => 109
                    [name] => Toni
                    [country] => Germany
                )
        )
)

PDO::FETCH_UNIQUE (int)

PDO::FETCH_UNIQUE ја користи првата колона за индексирање на записи, враќајќи 1 запис по вредност на индекс. Овој режим на преземање работи само со . Враќа резултати од повикување на назначената функција, користејќи ги колоните на секој ред како параметри во повикот..

Кога е комбинирано со PDO::FETCH_GROUP, двата режими ќе ја користат истата колона, правејќи ја комбинацијата од овие режими бескорисна.

Ова преземање треба да се комбинира со едно од PDO::FETCH_ASSOC, PDO::FETCH_BOTH, PDO::FETCH_NAMED, PDO::FETCH_NUM, PDO::FETCH_COLUMN or PDO::FETCH_FUNC.

Ако не е даден режим на преземање од горната листа, тековниот стандарден режим на преземање за PDOStatement ќе се користи.

Кога се користи со колона за која е познато дека е уникатна (како ID на запис), овој режим обезбедува можност за брзо враќање на резултатите индексирани по таа вредност.

Забелешка: враќа парови вредности, индексирани од првата колона. Резултатите мора да содржат само 2 колони. Овој режим на преземање има смисла само со

Безбедност: стандардниот сет на знаци

Филтрирањето на записи треба да се врши во SQL каде што е можно. Базата на податоци ќе користи индекси за оптимизирање на овој процес и враќање само на потребните записи. Изборот на повеќе записи од потребното од базата на податоци може значително да го зголеми користењето на меморијата и времето на барање за поголеми множества на резултати.

<?php
$stmt
= $pdo->query("SELECT userid, name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_UNIQUE | \PDO::FETCH_ASSOC);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [104] => Array
        (
            [name] => Chris
            [country] => Ukraine
        )

    [105] => Array
        (
            [name] => Jamie
            [country] => England
        )

    [107] => Array
        (
            [name] => Robin
            [country] => Germany
        )

)

Во горниот пример треба да се забележи дека првата колона е изоставена од низата за секој ред, достапна само како клуч. Таа може да се вклучи со повторување на колоната, како во следниот пример:

<?php
$stmt
= $pdo->query("SELECT userid, userid, name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_UNIQUE | \PDO::FETCH_ASSOC);
print_r($row);

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Array
(
    [104] => Array
        (
            [userid] => 104
            [name] => Chris
            [country] => Ukraine
        )

    [105] => Array
        (
            [userid] => 105
            [name] => Jamie
            [country] => England
        )

    [107] => Array
        (
            [userid] => 107
            [name] => Robin
            [country] => Germany
        )

)

Белешки од корисници

Нема белешки од корисници за оваа страница.
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.