Bom dia pessoal,
Estou usando uma classe para uso do PDO (http://tonylandis.com/php/php5-pdo-singleton-class/ )
E me deparei com um problema, que não é dela, e sim do próprio PDO, e está me gerando um erro.
Bem, quando executamos um query no PDO, e o SELECT não encontra nenhum registro, ele retorna false.
Queria saber se existe alguma forma dele retornar um objeto vazio ao invés de false.
O método responsável pela query é este:
public function query($statement) {
return self::$PDOInstance->query($statement);
}
Porém, como o PDO não existem um método count(), para evitar ter que enviar uma outra query só como contador, eu uso o fetchAll(), que está declarado neste método. Assim ele me retorna um array e eu uso a função count() do PHP para pegar a quantidade de registros:
public function queryFetchAllAssoc($statement) {
return self::$PDOInstance->query($statement)->fetchAll(PDO::FETCH_ASSOC);
}
Porém, este método gerará um erro caso o a consulta no banco não encontre nenhum arquivo, pois ele tentará dar um fetchAll() num valor booleano (o false que será retornado pelo método query()).
Fiz a seguinte alteração:
public function queryFetchAllAssoc($statement) {
$stmt = self::$PDOInstance->query($statement);
if(!$stmt){
return false;
}else{
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result = $stmt->fetchAll();
unset($stmt);
return $result;
}
}
Até funciona, mas a consulta ficou um pouco mais lenta, pela fato de ter criado o objeto e setado ele como null.
Minha dúvida então é: Tem como fazer com que o método query retorne um objeto vazio ao invés de false, ou fazer uma validação antes de chamar o fetchAll sem precisar criar um objeto?
Abraços!
.....................................................................................................................................
Janes Roberto da Costa
Analista de Sistemas (TAIG)
SEDUC–Secretaria de Estado de Educação de Mato Grosso
www.seduc.mt.gov.br
COT–Coordenadoria de Tecnologia da Informação
Telefone: (65) 3613-6394
E-mail: janes...@seduc.mt.gov.br
“Se, pois, o Filho do Homem vos libertar, verdadeiramente sereis livres.
E conhecereis a verdade, e a verdade vos libertará.” (João 8:32;36)
--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================
Não não, não é isso.
Preciso que, quando o resultado for zero (o SELECT retornar vazio), ao invés de retornar false, retorne um objeto nulo.
Ou de alguma validação para que o função abaixo não gere um erro:
public function queryFetchAllAssoc($statement) {
return self::$PDOInstance->query($statement)->fetchAll(PDO::FETCH_ASSOC);
}
.....................................................................................................................................
Janes Roberto da Costa
Analista de Sistemas (TAIG)
SEDUC–Secretaria de Estado de Educação de Mato Grosso
www.seduc.mt.gov.br
COT–Coordenadoria de Tecnologia da Informação
Telefone: (65) 3613-6394
E-mail: janes...@seduc.mt.gov.br
“Se, pois, o Filho do Homem vos libertar, verdadeiramente sereis livres.
E conhecereis a verdade, e a verdade vos libertará.” (João 8:32;36)