fetchColumn return boolean false when a row not is found or don't had more rows.
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)
PDOStatement::fetchColumn — Retorna uma única coluna do próximo registro de um resultado
Retorna uma única coluna do próximo registro de um resultado ou false
se
não houver mais registros.
Nota:
PDOStatement::fetchColumn() não deve ser usado para colunas do tipo booleano, já que é impossível distinguir um valor de
false
em relação à inexistência de mais registros a se recuperar. Use PDOStatement::fetch() em seu lugar.
column
Número da coluna que se deseja recuperar do registro, com índice iniciando em 0. Se nenhum valor for informado, PDOStatement::fetchColumn() busca a primeira coluna.
PDOStatement::fetchColumn() retorna uma única coluna
do próximo registro do resultado ou false
se não houver mais registros.
Não há como retornar outra coluna do mesmo registro se o método PDOStatement::fetchColumn() for usado para recuperar dados.
Emite um erro de nível E_WARNING
se o atributo PDO::ATTR_ERRMODE
estiver definido
como PDO::ERRMODE_WARNING
.
Lança uma exceção PDOException se o atributo PDO::ATTR_ERRMODE
estiver definido como PDO::ERRMODE_EXCEPTION
.
Exemplo #1 Retorna a primeira coluna do próximo registro
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
print "Busca a primeira coluna da primeira linha do resultado:\n";
$result = $sth->fetchColumn();
print "name = $result\n";
print "Busca a segunda coluna da segunda linha do resultado:\n";
$result = $sth->fetchColumn(1);
print "colour = $result\n";
?>
O exemplo acima produzirá:
Busca a primeira coluna da primeira linha do resultado: name = lemon Busca a segunda coluna da segunda linha do resultado: colour = red
fetchColumn return boolean false when a row not is found or don't had more rows.
This is an excellent method for returning a column count. For example:
<?php
$db = new PDO('mysql:host=localhost;dbname=pictures','user','password');
$pics = $db->query('SELECT COUNT(id) FROM pics');
$this->totalpics = $pics->fetchColumn();
$db = null;
?>
In my case $pics->fetchColumn() returns 641 because that is how many pictures I have in my db.
When migrating from mysqli it is important that while mysqli_result::fetch_column will iterate over subsequent rows PDOStatement::fetchColumn will NOT!
<?php
while ( $row0 = $db->query("SELECT `value` FROM `bool`")->fetchColumn(0) ) {
var_dump( $row0 );
}
?>
is an endless loop unless the first column in the first row of the table bool is "0".