Π Π΅ΠΆΠΈΠΌΡ‹ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ сСмСйствС констант курсора β€” 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 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° callback-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π Π΅ΠΆΠΈΠΌ совмСстим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().
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 опция устарСла.

Π Π΅ΠΆΠΈΠΌΡ‹ с ΠΎΠ΄Π½ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ нСсовмСстимы с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС
PDO::FETCH_BOUND ΠŸΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Π΅Ρ‚ значСния ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ.
PDO::FETCH_INTO ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.
PDO::FETCH_LAZY ЛСнивая Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PDORow, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ доступ ΠΊ свойствам ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π΅Π· синтаксис доступа ΠΊ элСмСнтам массива, Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ€Π΅Π· стандартный синтаксис доступа ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π€Π»Π°Π³ΠΈ спСцифичного повСдСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PDOStatement::fetchAll()

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для многострочной Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll() ΠΈ нСсовмСстимы с Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π΄Π°Ρ‘Ρ‚ полная докумСнтация.

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС
PDO::FETCH_GROUP Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ столбцу.
PDO::FETCH_UNIQUE Уникально индСксируСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ столбцу.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ столбцов

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° содСрТат столбцы с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ объСдинСнии Π΄Π²ΡƒΡ… Ρ‚Π°Π±Π»ΠΈΡ† с ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹ΠΌΠΈ столбцами.

Массив ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ возвращаСтся с СдинствСнным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Ρ… столбцов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ PHP-структуры β€” массивы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€” Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈΠ»ΠΈ свойств.

КакоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² Π½Π°Π·Π²Π°Π½ΠΈΠΉ вСрнётся β€” Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ.

Π‘Ρ‚ΠΎΠ»Π±Ρ†Π°ΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ псСвдонимы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° дублирования Π½Π°Π·Π²Π°Π½ΠΈΠΉ столбцов Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π°. НапримСр:

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 ΠΈ PDO::ATTR_FETCH_CATALOG_NAMES.

Установка Ρ€Π΅ΠΆΠΈΠΌΠ° Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° константы PDO::ATTR_DEFAULT_FETCH_MODE Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PDO::__construct() ΠΈΠ»ΠΈ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PDO::setAttribute() устанавливаСт Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для всСх запросов.

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ SQL-инструкции ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::setFetchMode(). Π˜Π½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ влияСт Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… SQL-инструкций ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² конструкциСй 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);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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

PDO::FETCH_BOTH (int)

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_BOTH возвращаСтся индСксно-ассоциативный массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки дублируСтся: ΠΎΠ΄Π½ΠΎ возвращаСтся со строковым ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΏΠΎ названию столбца, Π΄Ρ€ΡƒΠ³ΠΎΠ΅ β€” с числовым ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ столбца.

НумСрация столбцов Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с 0 ΠΈ опрСдСляСтся порядком столбцов Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… запроса, Π° Π½Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, порядком опрСдСлСния столбцов Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Π›ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΎΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° числовой индСкс столбца, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нумСрация измСнится ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ порядка столбцов Π² запросС ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ схСмы Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ запросС Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ SELECT *.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ записСй с индСксациСй ΠΏΠΎ названию столбца Π½Π΅ совпадёт с количСством записСй с индСксациСй ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ столбца, Ссли Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ столбцы с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.

<?php

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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

PDO::FETCH_NAMED (int)

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_NAMED Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΡƒ PDO::FETCH_ASSOC, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… столбцов Π² Π²ΠΈΠ΄Π΅ списка.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ столбцов ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°Ρ… рассказываСт Ρ€Π°Π·Π΄Π΅Π» Β«ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ столбцов».

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… столбцов Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½. НСвозмоТно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ источник ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния.

<?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);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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

PDO::FETCH_NUM (int)

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_NUM возвращаСтся индСксный массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ»ΡŽΡ‡ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½ΠΎΠΌΠ΅Ρ€Ρƒ столбца. НумСрация столбцов начинаСтся с 0 ΠΈ опрСдСляСтся порядком столбцов Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… запроса, Π° Π½Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, порядком опрСдСлСния столбцов Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π›ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΎΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° числовой индСкс столбца, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нумСрация измСнится ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ порядка столбцов Π² запросС ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ схСмы Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ запросС Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ SELECT *.

<?php

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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

PDO::FETCH_COLUMN (int)

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_COLUMN Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ значСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ столбца. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PDOStatement::setFetchMode() ΠΈΠ»ΠΈ PDOStatement::fetchAll() ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ столбСц ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ выбросит ΠΎΡˆΠΈΠ±ΠΊΡƒ 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);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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

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

PDO::FETCH_KEY_PAIR (int)

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_KEY_PAIR возвращаСтся массив ΠΏΠ°Ρ€ Β«ΠΊΠ»ΡŽΡ‡ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ»ΡŽΡ‡ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ столбцу. Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π² запросС ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 столбца. Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π²Π΅Ρ€Π½Ρ‘Ρ‚ осмыслСнныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PDOStatement::fetchAll().

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ЗначСния ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ, Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц содСрТит Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния. НСвозмоТно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ значСния Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ.

<?php

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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

PDO::FETCH_FUNC (int)

Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π΅Ρ€Π½Ρ‘Ρ‚ функция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Π Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().

ЗначСния столбцов становятся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. По значСниям Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ названия столбцов. ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ соотвСтствиС порядка столбцов Π² запросС порядку ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π Π΅ΠΆΠΈΠΌ PDO::FETCH_GROUP Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚, Π° Ρ€Π΅ΠΆΠΈΠΌ 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);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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
        )

)

PDO::FETCH_OBJ (int)

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_OBJ возвращаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ stdClass.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ описания ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PDOStatement::fetchObject() ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° PDO::FETCH_CLASS.

<?php

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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

PDO::FETCH_CLASS (int)

Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ возвращаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄Π°Ρ‘Ρ‚ описаниС Ρ„Π»Π°Π³ΠΎΠ² ΠΎΠΏΡ†ΠΈΠΉ.

Бвойство ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡΡ динамичСски, Ссли класс Π½Π΅ содСрТит свойства с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ столбца. ОбъявлСниС динамичСских свойств устарСло ΠΈ начиная с PHP 9.0 Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PDOStatement::fetchObject().

<?php

class TestEntity
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;

public function
__construct()
{
print
"ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π·Π²Π°Π»ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²: " . count(func_get_args()) . "\n";
print
"Бвойства ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° конструктора? "
. (isset($this->name) ? 'Π”Π°' : 'НСт') . "\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);

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆ Π½Π°:

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π·Π²Π°Π»ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²: 0
Бвойства ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° конструктора? Π”Π°
object(TestEntity)#3 (4) {
  ["userid"]=>
  int(104)
  ["name"]=>
  string(5) "Chris"
  ["country"]=>
  string(7) "Ukraine"
  ["referred_by_userid"]=>
  NULL
}

PDO::FETCH_CLASSTYPE (int)

ΠžΠΏΡ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сочСтании с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ PDO::FETCH_CLASS ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ опциями Ρ€Π΅ΠΆΠΈΠΌΠ°.

Π‘ этой ΠΎΠΏΡ†ΠΈΠ΅ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PDO Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ класса, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ совпадаСт с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбца Π² запросС.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ stdClass, Π±Π΅Π· Π²Ρ‹Π΄Π°Ρ‡ΠΈ прСдупрСТдСния ΠΈΠ»ΠΈ ошибки, Ссли Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ класс нСдоступСн.

<?php

class TestEntity
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;

public function
__construct()
{
print
"ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π·Π²Π°Π»ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²: " . count(func_get_args()) . "\n";
print
"Бвойства ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° конструктора? "
. (isset($this->name) ? 'Π”Π°' : 'НСт') . "\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);

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆ Π½Π°:

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π·Π²Π°Π»ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²: 0
Бвойства ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° конструктора? Π”Π°
object(TestEntity)#3 (4) {
  ["userid"]=>
  int(104)
  ["name"]=>
  string(5) "Chris"
  ["country"]=>
  string(7) "Ukraine"
  ["referred_by_userid"]=>
  NULL
}

PDO::FETCH_PROPS_LATE (int)

ΠžΠΏΡ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сочСтании с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ PDO::FETCH_CLASS ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ опциями Ρ€Π΅ΠΆΠΈΠΌΠ°.

Π‘ этой ΠΎΠΏΡ†ΠΈΠ΅ΠΉ конструктор вызываСтся Π΄ΠΎ установки свойств.

<?php

class TestEntity
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;

public function
__construct()
{
print
"ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π·Π²Π°Π»ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²: " . count(func_get_args()) . "\n";
print
"Бвойства ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° конструктора? "
. (isset($this->name) ? 'Π”Π°' : 'НСт') . "\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);

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆ Π½Π°:

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π·Π²Π°Π»ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²: 0
Бвойства ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° конструктора? НСт
object(TestEntity)#3 (4) {
  ["userid"]=>
  int(104)
  ["name"]=>
  string(5) "Chris"
  ["country"]=>
  string(7) "Ukraine"
  ["referred_by_userid"]=>
  NULL
}

PDO::FETCH_SERIALIZE (int)

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Начиная с PHP 8.1.0 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ УБВАРЕЛА. ΠŸΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚.

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сочСтании с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ PDO::FETCH_CLASS ΠΈ опциями Ρ€Π΅ΠΆΠΈΠΌΠ°.

Π Π΅ΠΆΠΈΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с классами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ интСрфСйс Serializable.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅

Π Π΅ΠΆΠΈΠΌ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ сами строки с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ сСриализации ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ функция serialize().

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор.

<?php

class TestEntity implements Serializable
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;

public function
__construct()
{
print
"ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π·Π²Π°Π»ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²: " . count(func_get_args()) . "\n";
print
"Бвойства ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° конструктора? "
. (isset($this->name) ? 'Π”Π°' : 'НСт') . "\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
"Настройка записи (конструктор вызываСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ):\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
"\nΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:\n";

$query = "SELECT sdata FROM serialize";

$stmt = $db->query($query);

// ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•: ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π½Π΅ вызываСтся!
$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
Настройка записи (конструктор вызываСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ):
ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π·Π²Π°Π»ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²: 0
Бвойства ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° конструктора? НСт

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
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
}

PDO::FETCH_BOUND (int)

ΠžΠΏΡ†ΠΈΡ нСсовмСстима с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().

Π‘ этой ΠΎΠΏΡ†ΠΈΠ΅ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° привязываСт значСния ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::bindColumn(). Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… SQL-инструкций ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ послС выполнСния запроса.

<?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);
// БвязываСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ столбца, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ названия столбца.
// А Π»ΡƒΡ‡ΡˆΠ΅ вмСсто названия столбца ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² SQL-запросС псСвдоним,
// Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ привязку ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ запроса,
// Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: referrer.name AS referrer_name
$stmt->bindColumn(4, $referrerName);

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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

PDO::FETCH_INTO (int)

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ нСсовмСстим с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ обновляСт свойства Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ссли выполнился ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Бвойство ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡΡ динамичСски, Ссли класс Π½Π΅ содСрТит свойства с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ столбца. ОбъявлСниС динамичСских свойств устарСло ΠΈ начиная с PHP 9.0 Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свойства с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ public, Π° Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Π΅ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ свойства ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ свойство с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ readonly Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅

НСвозмоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ обновляСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π΅Π· Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PDOStatement::setFetchMode() ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи.

<?php

class TestEntity
{
public
$userid;

public
$name;

public
$country;

public
$referred_by_userid;
}

$obj = new TestEntity();

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

$stmt->setFetchMode(\PDO::FETCH_INTO, $obj);
$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
}

PDO::FETCH_LAZY (int)

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ нСсовмСстим с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().

Π Π΅ΠΆΠΈΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PDORow, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ доступ ΠΊ свойствам ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π΅Π· синтаксис доступа ΠΊ элСмСнтам массива, Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ€Π΅Π· синтаксис доступа ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, сочСтая ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² PDO::FETCH_BOTH ΠΈ PDO::FETCH_OBJ. Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ строки ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Β«Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌΒ» способом β€” Π½Π΅ создаёт Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр, Π° обновляСт значСния свойств Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅.

Π›Π΅Π½ΠΈΠ²ΠΎΠ΅ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ доступа ΠΊ Π½Π΅Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Π½Π° сСрвСрС Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π½Π° сторонС PHP. Π‘ΡƒΡ„Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ Π»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PDO Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° клиСнтской сторонС, зависит ΠΎΡ‚ спСцифичного для Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ доступС ΠΊ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ свойствам ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PDORow Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL, Π±Π΅Π· ошибки ΠΈΠ»ΠΈ прСдупрСТдСния. Π­Ρ‚ΠΎ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ, ΠΈΠ»ΠΈ запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ 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";
// ВозвращаСтся NULL. Π‘Π΅Π· Π²Ρ‹Π΄Π°Ρ‡ΠΈ прСдупрСТдСния ΠΈΠ»ΠΈ ошибки.
print "НСопрСдСлённоС свойство: " . var_export($result->does_not_exist, true) . "\n";

$differentResult = $stmt->fetch(\PDO::FETCH_LAZY);
// ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PDORow Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° вновь ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
print "ID: " . $result[0] . "\n";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

ID: 104
Name: Chris
Country: Ukraine
НСопрСдСлённоС свойство: NULL
ID: 105

PDO::FETCH_GROUP (int)

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_GROUP Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ списки ассоциативных массивов, ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… становятся значСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбца. Для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… столбцов Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ списки ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ записи, поэтому установка Ρ€Π΅ΠΆΠΈΠΌΠ° становится ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΠΎ Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ столбцу. Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().

ΠŸΡ€ΠΈ объСдинСнии с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ PDO::FETCH_UNIQUE ΠΎΠ±Π° ΠΏΡ€ΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ столбцу, поэтому сочСтаниС Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² бСсполСзно.

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ столбцу ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ: PDO::FETCH_ASSOC, PDO::FETCH_BOTH, PDO::FETCH_NAMED, PDO::FETCH_NUM, PDO::FETCH_COLUMN ΠΈΠ»ΠΈ 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);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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 возвращаСтся массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ записи ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ столбцу, ΠΈ возвращаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° запись для значСния индСкса. Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().

ΠŸΡ€ΠΈ объСдинСнии с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ PDO::FETCH_GROUP ΠΎΠ±Π° ΠΏΡ€ΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ столбцу, поэтому сочСтаниС Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² бСсполСзно.

Π Π΅ΠΆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ с ΡƒΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ столбцу ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ: PDO::FETCH_ASSOC, PDO::FETCH_BOTH, PDO::FETCH_NAMED, PDO::FETCH_NUM, PDO::FETCH_COLUMN ΠΈΠ»ΠΈ PDO::FETCH_FUNC.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ PDOStatement ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли для Ρ€Π΅ΠΆΠΈΠΌΠ° ΡƒΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ Π·Π°Π΄Π°Π»ΠΈ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ списка.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ столбцом Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ID Ρ€Π΅ΠΆΠΈΠΌ быстро Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π‘Π” содСрТит индСкс для Ρ‚Π°ΠΊΠΎΠ³ΠΎ значСния.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ ΠΈΠ· Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… столбцов значСния ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ. НСвозмоТно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ значСния Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ записСй Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² 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);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

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
        )

)
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы