PDOStatement::fetch
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::fetch — Витяг наступного рядка з результуючого набору
Опис
public PDOStatement::fetch(int $mode = PDO::FETCH_DEFAULT, int $cursorOrientation = PDO::FETCH_ORI_NEXT, int $cursorOffset = 0): mixed
Витягує наступний рядок з результуючого набору об'єкта PDOStatement. Параметр mode
визначає, як PDO поверне цей рядок.
Список параметрів
mode
Визначає, в якому вигляді наступний рядок буде повернено в метод, що викликає. Це може бути одна з констант PDO::FETCH_*
По умолчаниюPDO::ATTR_DEFAULT_FETCH_MODE
(що рівносильно PDO::FETCH_BOTH
-
PDO::FETCH_ASSOC
: повертає масив, індексований іменами стовпців результуючого набору -
PDO::FETCH_BOTH
(за замовчуванням): повертає масив, індексований іменами шпальт результуючого набору, а також їх номерами (починаючи з 0) -
PDO::FETCH_BOUND
: повертає**true
**і надає значення стовпців результуючого набору змінним PHP, які були прив'язані до цих стовпців методомPDOStatement::bindColumn() -
PDO::FETCH_CLASS
: створює та повертає об'єкт запитаного класу, присвоюючи значення стовпців результуючого набору іменованим властивостям класу, і потім викликає конструктор, якщо не заданийPDO::FETCH_PROPS_LATE
. Якщоmode
включає атрибут PDO::FETCH_CLASSTYPE (наприклад,PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE
), то ім'я класу, від якого потрібно створити об'єкт, буде взято з першого стовпця. -
PDO::FETCH_INTO
: оновлює існуючий об'єкт запитаного класу, присвоюючи значення стовпців результуючого набору іменованим властивостям об'єкта -
PDO::FETCH_LAZY
: комбінуєPDO::FETCH_BOTH
иPDO::FETCH_OBJ
та повертає об'єкт PDORowщо створює імена властивостей об'єкта в міру доступу до них. -
PDO::FETCH_NAMED
: повертає масив такого ж виду, як іPDO::FETCH_ASSOC
але якщо є кілька полів з однаковим ім'ям, то значенням з цим ключем буде масив з усіма значеннями з рядів, в яких це поле вказано. -
PDO::FETCH_NUM
: повертає масив, індексований номерами стовпців (починаючи з 0) -
PDO::FETCH_OBJ
: створює анонімний об'єкт із властивостями, що відповідають іменам стовпців результуючого набору -
PDO::FETCH_PROPS_LATE
: якщо використовується зPDO::FETCH_CLASS
, конструктор класу буде викликано перед призначенням властивостей значень стовпців.
cursorOrientation
Для об'єктів PDOStatement, що представляють курсор, що прокручується, цей параметр визначає, який рядок буде повертатися в викликаючий метод. Значенням параметра має бути одна з констант PDO::FETCH_ORI_*
, по умолчаниюPDO::FETCH_ORI_NEXT
. Щоб запросити курсор, що прокручується, для запиту PDOStatement, необхідно задати атрибут PDO::ATTR_CURSOR
со значениемPDO::CURSOR_SCROLL
во время подготовки запроса методомPDO::prepare()
cursorOffset
Для об'єктів PDOStatement, що представляють курсор, що прокручується, параметр cursorOrientation
яких набуває значення PDO::FETCH_ORI_ABS
, Ця величина означає абсолютний номер рядка, яку необхідно витягти з результуючого набору.
Для об'єктів PDOStatement, що представляють курсор, що прокручується, параметр cursorOrientation
яких набуває значення PDO::FETCH_ORI_REL
, ця величина вказує, який рядок щодо поточного положення курсору буде вилучено функцією PDOStatement::fetch()
Значення, що повертаються
У разі успішного виконання функції значення, що повертається, залежить від режиму вибірки. У разі виникнення помилки або якщо немає рядків, функція повертає false
Помилки
Видає помилку рівня E_WARNING
, якщо атрибуту PDO::ATTR_ERRMODE
установлено значениеPDO::ERRMODE_WARNING
Викидає виняток PDOException, якщо атрибуту PDO::ATTR_ERRMODE
установлено значениеPDO::ERRMODE_EXCEPTION
Приклади
Приклад #1 Вилучення рядків у різних режимах вибірки
Loading...
Результат виконання наведеного прикладу:
PDO::FETCH_ASSOC: Возвращаем следующую строку в виде массива, индексированного именами столбцов
Array
(
[name] => apple
[colour] => red
)
PDO::FETCH_BOTH: Возвращаем следующую строку в виде массива, индексированного как именами столбцов, так и их номерами
Array
(
[name] => banana
[0] => banana
[colour] => yellow
[1] => yellow
)
PDO::FETCH_LAZY: Возвращаем следующую строку в виде анонимного объекта со свойствами, соответствующими столбцам
PDO::FETCH_LAZY: Возвращаем следующую строку в виде объекта класса PDORow с именами столбцов в качестве свойств
PDORow Object
(
[name] => orange
[colour] => orange
)
PDO::FETCH_OBJ: Возвращаем следующую строку в виде анонимного объекта со свойствами, соответствующими столбцам
kiwi
Приклад #2 Вибірка рядків засобами курсору, що прокручується.
Loading...
Результат виконання наведеного прикладу:
Читаем в прямой последовательности:
21 10 5
16 0 5
19 20 10
Читаем в обратной последовательности:
19 20 10
16 0 5
21 10 5
Приклад #3 Порядок конструкторів
Якщо об'єкти забираються за допомогою PDO::FETCH_CLASS
, спочатку надаються властивості об'єкта, а потім викликається конструктор об'єкта. Якщо також задано PDO::FETCH_PROPS_LATE
, цей порядок змінюється на зворотний.
Loading...
Висновок наведеного прикладу буде схожим на:
Я - Alice.
Я Alice.
У меня ещё нет имени.
Я Bob.
Дивіться також
- PDO::prepare() - готує запит до виконання та повертає пов'язаний із цим запитом об'єкт
- PDOStatement::execute() - Запускає підготовлений запит на виконання
- PDOStatement::fetchAll() - Вибирає рядки, що залишилися, з набору результатів
- PDOStatement::fetchColumn() - Повертає дані одного стовпця наступного рядка результуючого набору
- PDOStatement::fetchObject() - Витягує наступний рядок і повертає його у вигляді об'єкта
- PDOStatement::setFetchMode() - Встановлює режим вибірки за промовчанням для об'єкта запиту