PDOStatement::fetchAll

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

PDOStatement::fetchAllВыбирает оставшиеся строки из набора результатов

Описание

publicPDOStatement::fetchAll(int$mode = PDO::FETCH_DEFAULT): array
publicPDOStatement::fetchAll(int$mode = PDO::FETCH_COLUMN, int$column): array
publicPDOStatement::fetchAll(int$mode = PDO::FETCH_CLASS, string$class, ?array$constructorArgs): array
publicPDOStatement::fetchAll(int$mode = PDO::FETCH_FUNC, callable$callback): array

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

mode

Определяет содержимое возвращаемого массива. Подробней можно узнать из документации к методу PDOStatement::fetch(). По умолчанию параметр принимает значение PDO::ATTR_DEFAULT_FETCH_MODE (которое в свою очередь имеет умолчание PDO::FETCH_BOTH)

Чтобы извлечь значения только одного столбца, передайте в качестве значения этого параметра константу PDO::FETCH_COLUMN. С помощью параметра column можно задать столбец, из которого требуется извлечь данные.

Если требуется извлечь только уникальные строки одного столбца, нужно передать побитовое ИЛИ констант PDO::FETCH_COLUMN и PDO::FETCH_UNIQUE.

Чтобы получить ассоциативный массив строк сгруппированный по значениям определённого столбца, нужно передать побитовое ИЛИ констант PDO::FETCH_COLUMN и PDO::FETCH_GROUP.

Следующие параметры являются динамическими и зависят от режима выборки. Они не могут использоваться совместно с именованными параметрами.
column

Используется с PDO::FETCH_COLUMN. Возвращает указанный столбец с индексом, начинающимся с 0.

class

Используется с PDO::FETCH_CLASS. Возвращает экземпляры указанного класса, сопоставляя столбцы каждой строки с именованными свойствами класса.

constructorArgs

Аргументы конструктора пользовательского класса, когда параметр mode равен PDO::FETCH_CLASS.

callback

Используется с PDO::FETCH_FUNC. Возвращает результаты вызова указанной функции, используя столбцы каждой строки в качестве параметров вызова.

Возвращаемые значения

Метод PDOStatement::fetchAll() возвращает массив, содержащий все оставшиеся строки результирующего набора. Массив представляет каждую строку либо в виде массива значений одного столбца, либо в виде объекта, имена свойств которого совпадают с именами столбцов.

Использование этого метода для извлечения строк больших результирующих наборов может пагубно сказаться на производительности системы и сетевых ресурсов. Вместо извлечения всех данных и их обработки в PHP рекомендуется использовать встроенные средства СУБД. Например, использование выражений WHERE и ORDER BY языка SQL может уменьшить размеры результирующего набора.

Ошибки

Выдаёт ошибку уровня E_WARNING, если атрибуту PDO::ATTR_ERRMODE установлено значение PDO::ERRMODE_WARNING.

Выбрасывает исключение PDOException, если атрибуту PDO::ATTR_ERRMODE установлено значение PDO::ERRMODE_EXCEPTION.

Список изменений

ВерсияОписание
8.0.0 Метод теперь всегда возвращает массив (array), раньше в случае возникновения ошибки могло возвращаться false.

Примеры

Пример #1 Извлечение всех оставшихся строк результирующего набора

<?php
$sth
= $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();


print "Извлечение всех оставшихся строк результирующего набора:\n";
$result = $sth->fetchAll();
print_r($result);
?>

Вывод приведённого примера будет похож на:

Извлечение всех оставшихся строк результирующего набора: Array ( [0] => Array ( [name] => apple [0] => apple [colour] => red [1] => red ) [1] => Array ( [name] => pear [0] => pear [colour] => green [1] => green ) [2] => Array ( [name] => watermelon [0] => watermelon [colour] => pink [1] => pink ) )

Пример #2 Извлечение всех значений одного столбца результирующего набора

В следующем примере показано, как извлечь из результирующего набора значения только одного столбца, даже если строки содержат значения нескольких столбцов.

<?php
$sth
= $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();


$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>

Вывод приведённого примера будет похож на:

Array(3) ( [0] => string(5) => apple [1] => string(4) => pear [2] => string(10) => watermelon )

Пример #3 Группировка строк по значениям одного столбца

В следующем примере показано, как получить ассоциативный массив строк результирующего набора, сгруппированных по значениям указанного столбца. Массив содержит три ключа: значения apple и pear являются массивами, содержащими два разных цвета; в тоже время watermelon будет массивом, содержащим только один цвет.

<?php
$insert
= $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)");
$insert->execute(array('apple', 'green'));
$insert->execute(array('pear', 'yellow'));

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();


var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
?>

Вывод приведённого примера будет похож на:

array(3) { ["apple"]=> array(2) { [0]=> string(5) "green" [1]=> string(3) "red" } ["pear"]=> array(2) { [0]=> string(5) "green" [1]=> string(6) "yellow" } ["watermelon"]=> array(1) { [0]=> string(5) "pink" } }

Пример #4 Создание объекта для каждой строки

В следующем примере показано поведение метода в режиме выборки PDO::FETCH_CLASS.

<?php
class fruit {
public
$name;
public
$colour;
}

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);
?>

Вывод приведённого примера будет похож на:

array(3) { [0]=> object(fruit)#1 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(5) "green" } [1]=> object(fruit)#2 (2) { ["name"]=> string(4) "pear" ["colour"]=> string(6) "yellow" } [2]=> object(fruit)#3 (2) { ["name"]=> string(10) "watermelon" ["colour"]=> string(4) "pink" } [3]=> object(fruit)#4 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(3) "red" } [4]=> object(fruit)#5 (2) { ["name"]=> string(4) "pear" ["colour"]=> string(5) "green" } }

Пример #5 Вызов функции для каждой строки

В следующем примере показано поведение метода в режиме выборки PDO::FETCH_FUNC.

<?php
function fruit($name, $colour) {
return
"{$name}: {$colour}";
}

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
var_dump($result);
?>

Вывод приведённого примера будет похож на:

array(3) { [0]=> string(12) "apple: green" [1]=> string(12) "pear: yellow" [2]=> string(16) "watermelon: pink" [3]=> string(10) "apple: red" [4]=> string(11) "pear: green" }

Смотрите также

  • PDO::query() - Подготавливает и выполняет выражение SQL без заполнителей
  • PDOStatement::fetch() - Извлечение следующей строки из результирующего набора
  • PDOStatement::fetchColumn() - Возвращает данные одного столбца следующей строки результирующего набора
  • PDO::prepare() - Подготавливает запрос к выполнению и возвращает связанный с этим запросом объект
  • PDOStatement::setFetchMode() - Устанавливает режим выборки по умолчанию для объекта запроса
To Top