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

Posso detectar e lidar com avisos do MySQL com PHP?


Para que os avisos sejam "sinalizados" para PHP nativamente, seriam necessárias alterações no driver mysql/mysqli, o que obviamente está além do escopo desta questão. Em vez disso, você terá que verificar basicamente todas as consultas feitas no banco de dados em busca de avisos:
$warningCountResult = mysql_query("SELECT @@warning_count");
if ($warningCountResult) {
    $warningCount = mysql_fetch_row($warningCountResult );
    if ($warningCount[0] > 0) {
        //Have warnings
        $warningDetailResult = mysql_query("SHOW WARNINGS");
        if ($warningDetailResult ) {
            while ($warning = mysql_fetch_assoc($warningDetailResult) {
                //Process it
            }
        }
    }//Else no warnings
}

Obviamente, isso vai ser terrivelmente caro para aplicar em massa, então você pode precisar pensar cuidadosamente sobre quando e como os avisos podem surgir (o que pode levar você a refatorar para eliminá-los).

Para referência, MySQL SHOW WARNINGS

Claro, você pode dispensar a consulta inicial para o SELECT @@warning_count , o que economizaria uma consulta por execução, mas eu a incluí para uma completude pedante.