Como gerenciar os erros no PDO

Março 2017


Como ativar a exibição dos erros no PDO

Por padrão, PDO não exibe os diversos erros ligados ao código ou às pesquisas. Para fazê-los aparecer, é preciso ativar a opção durante a inicialização:


setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Como este:

try{
$bdd =new PDO('mysql:host=localhost; 
 dbname=mabdd; charset=utf8', 'user', 'password');
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch(PDOException $e) {
    die('Erro: ' . $e->getMessage());
}

Observação: pense também em ativar a exibição dos erros PHP, habilitando a opção no php.ini ou colocando, no início dos seus scripts PHP a linha do seguinte código:

error_reporting(E_ALL);

Relatório de erro

Como detectar os erros nas pesquisas

Para detectar os erros de código ou de pesquisas você pode usar blocos TRY/CATCH.
Por exemplo:

//preparação da pesquisa e das variáveis
 $sql = "INSERT INTO matable (campo1,campo2)   VALUES (:valor1,:outrovalor)";

 $datas = array(':valor1'=>$valor1, ':outrovalor'=>$joão);

//Execução da pesquisa
try{
  $pesquisa = $bdd -> prepare($sql) ;
  $pesquisa ->execute($datas) ;
}catch(Exception $e){
  // em caso de erro:
   eco " Erro ! ".$e->getMessage();
   eco " As datas : " ;
  print_r($datas);
}

Observação: o fato de separar a pesquisa (o conteúdo da variável $sql) de sua execução (o ‘prepare’ e o ‘execute’) permite fazer um eco em caso de necessidade. O mesmo vale para as variáveis (conteúdos em $datas).

Erro relacionado com um problema na pesquisa

Este é um outro assunto...mas já posso adiantar que é imperativo testar suas pesquisas DIRETAMENTE em seu BDD (passando, por exemplo, pelo phpmyadmin, se você estiver em mysql ou por um software como o HeidiSql). Isso permitirá que você saiba exatamente onde está o erro: um nome de campo ou tabela com erros ortográficos, um espaço esquecido, citações faltando, etc.

Saiba mais

PDO: outra maneira de acessar seus bancos de dados
PHP – Notice: Undefined Index
PHP: a extensão MySql é obsoleta
Heidisql: testar suas pesquisas (em francês)

Foto: © Pixabay.
Introdução ao PHP PDO

Veja também

Artigo original publicado por . Tradução feita por pintuda.
Este documento, intitulado 'Como gerenciar os erros no PDO', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.