Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como pegar o resultado de $statment->execute(); ?

Bom dia.

Quando eu executo o $statment->execute(); preciso saber se a ação foi bem sucedida no banco ou não? Como obter o resultado da ação?

Parabéns pelas aulas.

2 respostas
solução!

Olá,

O método execute() normalmente retorna true se a consulta foi executada com sucesso e false se ocorreu algum erro.

Além disso, para obter informações mais detalhadas sobre o resultado da ação, especialmente se você estiver executando uma instrução que afeta linhas no banco de dados (como INSERT, UPDATE ou DELETE), você pode usar o método rowCount() para obter o número de linhas afetadas pela ação. Por exemplo:

if ($statement->execute()) {
    $rowCount = $statement->rowCount();
    echo "Ação bem-sucedida. Número de linhas afetadas: $rowCount";
} else {
    $errorInfo = $statement->errorInfo();
    echo "Erro: " . $errorInfo[2]; // Mensagem de erro específica do banco de dados
}

O código verifica se a execução foi bem-sucedida usando o if ($statement->execute()). Se for bem-sucedida, ele obtém o número de linhas afetadas usando $statement->rowCount() e exibe essa informação. Caso contrário, se houver um erro, ele usa $statement->errorInfo() para obter detalhes sobre o erro e exibe a mensagem específica do banco de dados.

Lembre-se de que o método errorInfo() retorna um array contendo informações sobre o erro. A mensagem de erro específica geralmente estará na terceira posição do array, ou seja, $errorInfo[2]. Certifique-se de ajustar isso de acordo com o comportamento específico do seu driver de banco de dados.

Oi, Luis! Muito obrigado :)

Você pode fazer como o Davi mencionou ou você pode usar Try-Catch. Dá uma olhada no capítulo desse curso:

https://cursos.alura.com.br/course/php-pdo-banco-de-dados/task/72940

Bons estudos!