Isto é o que
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
é para. Use assim:$pdo = new PDO(
'mysql:host=localhost;port=3306;dbname=mydb;charset=utf8'
, 'user'
, 'pass'
, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]
);
Quando usado dessa maneira, os erros são realmente lançados como exceções. Isso significa que, caso ocorra um erro com fetch (ou outros métodos usando este objeto pdo), uma exceção será lançada e o método não retornará. Esta é uma maneira muito eficaz de lidar com erros no PDO. Agora você sabe que, se fetch retornar um valor, nenhum erro ocorreu e, portanto, se for false, a consulta não retornou nenhum registro.