PDOStatement :: fetchAll
PDOStatement :: fetchAll - retorna uma matriz de todas as linhas no conjunto de resultados (PHP 5> = 5.1.0, PECL pdo> = 0.1.0)
explicação
gramática
array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )
parâmetros
fetch_style
Como para controlar a próxima linha é devolvida ao chamador. Este valor deve ser PDO :: fetch_ * constantes em uma série, o valor padrão para o PDO :: ATTR_DEFAULT_FETCH_MODE (default PDO :: FETCH_BOTH).
Para retornar um conjunto de resultados que contém uma matriz de todos os valores em uma única coluna, você precisa especificar PDO :: FETCH_COLUMN. Obter as colunas desejadas especificando parâmetro coluna de índice.
Deseja obter o conjunto de resultados de valores exclusivos em uma única coluna, você precisa PDO :: FETCH_COLUMN e PDO :: bit a bit FETCH_UNIQUE ou.
Para retornar uma coluna com base no valor especificado da matriz associativa agrupados, precisamos PDO :: FETCH_COLUMN e PDO :: bit a bit FETCH_GROUP ou.
fetch_argument
Fetch_style parâmetro com base no valor deste parâmetro tem um significado diferente:
PDO::FETCH_COLUMN
: Volta para as colunas de zero-indexados.PDO::FETCH_CLASS
: retorna uma instância da classe especificada, a coluna de mapeamento para cada linha correspondente à classe nome de atributo.PDO::FETCH_FUNC
: a coluna de cada linha como um argumento para a função especificada, e retorna o resultado depois de chamar a função.
ctor_args
Quando os parâmetros fetch_style PDO :: FETCH_CLASS, uma vez que a definição dos parâmetros do construtor de classe.
Valor de retorno
PDOStatement :: fetchAll () retorna um conjunto de resultados que contém uma matriz de todas as linhas restantes. Cada linha dessa matriz é uma matriz ou um valor de coluna ou um atributo de objeto correspondente a cada nome de coluna.
Utilize este método para obter um grande conjunto de resultados fará com que a carga do sistema e pode levar até um monte de recursos de rede. Recuperar todos os dados e seu uso PHP para operar, seria melhor considerar o uso de serviços de banco de dados para lidar com o conjunto de resultados. Por exemplo, antes e recuperar dados através do processo de PHP para definir os resultados com WHERE e cláusulas ORDER BY em SQL.
Exemplos
Obter todas as linhas restantes no conjunto de resultados
<?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* 获取结果集中所有剩余的行 */ print("Fetch all of the remaining rows in the result set:\n"); $result = $sth->fetchAll(); print_r($result); ?>
A saída do exemplo acima é:
Fetch all of the remaining rows in the result set: Array ( [0] => Array ( [NAME] => pear [0] => pear [COLOUR] => green [1] => green ) [1] => Array ( [NAME] => watermelon [0] => watermelon [COLOUR] => pink [1] => pink ) )
Sendo um único resultado definir todos os valores
O exemplo a seguir demonstra como a concentrar-se um retorno separado todos os valores de um resultado, mesmo que a instrução SQL em si pode retornar várias colunas por linha.
<?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* 获取第一列所有值 */ $result = $sth->fetchAll(PDO::FETCH_COLUMN, 0); var_dump($result); ?>
A saída do exemplo acima é:
Array(3) ( [0] => string(5) => apple [1] => string(4) => pear [2] => string(10) => watermelon )
De acordo com um agrupamento separado todos os valores
O exemplo que se segue demonstra como devolver um valor de coluna especificada matriz associativa centralizada com base nos resultados do pacote. A matriz contém três teclas: Maçã e pêra array retornado contém duas cores diferentes, enquanto melancia voltou matriz contém apenas uma cor.
<?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)); ?>
A saída do exemplo acima é:
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) "green" } }
Cada linha no resultado instanciar uma classe
Liezi abaixo demonstra PDO :: FETCH_CLASS Obtém comportamento estilo.
<?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); ?>
A saída do exemplo acima é:
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" } }
Cada linha chama uma função
Liezi abaixo demonstra PDO :: FETCH_FUNC Obtém comportamento estilo.
<?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); ?>
A saída do exemplo acima é:
array(3) { [0]=> string(12) "apple: green" [1]=> string(12) "pear: yellow" [2]=> string(16) "watermelon: pink" }