Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysqli ou morrer, tem que morrer?


Tem que morrer

Muito pelo contrário, não deveria or die() nunca.
PHP é uma linguagem de má hereditariedade. Hereditariedade muito ruim. E or die() com uma mensagem de erro sendo um dos piores rudimentos:
  • die lança uma mensagem de erro, revelando alguns componentes internos do sistema para um possível invasor
  • está confundindo usuários inocentes com mensagens estranhas e deixando-os sem interface para trabalhar, então eles provavelmente desistiriam.
  • ele mata o script no meio, então pode causar um design rasgado (ou nenhum design) mostrado (ou seja, uma renderização incompleta da página solicitada pelo usuário)
  • matando o script de forma irrecuperável. Enquanto a exceção lançada pode ser capturada e tratada normalmente
  • die() não fornece nenhuma dica do local onde ocorreu o erro . E em um aplicativo relativamente grande, será muito difícil encontrá-lo.

Portanto, nunca use die() com erros do MySQL, mesmo para a depuração temporária :existem maneiras melhores.

Em vez de verificar manualmente o erro, basta configurar o mysqli para lançar exceções em caso de erro, adicionando a seguinte linha ao seu código de conexão
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

e depois disso, basta escrever cada comando mysqli como está, sem nenhum or die ou qualquer outra coisa:
$result = mysqli_query($link, $sql);

Este código lançará uma exceção em caso de erro e, portanto, você sempre será informado de todos os problemas sem uma única linha de código extra.

Uma explicação mais detalhada sobre como tornar sua produção de relatórios de erros pronta, uniforme e sensata ao mesmo tempo em que torna seu código muito mais limpo, você pode encontrar no meu artigo em Relatório de erros PHP .