sql >> Base de Datos >  >> RDS >> Mysql

¿Puedo detectar y manejar las advertencias de MySQL con PHP?

Para que las advertencias se "marquen" en PHP de forma nativa, se requerirían cambios en el controlador mysql/mysqli, lo que obviamente está más allá del alcance de esta pregunta. En su lugar, básicamente tendrá que verificar cada consulta que realice en la base de datos en busca de advertencias:

$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, esto va a ser terriblemente costoso de aplicar en masa, por lo que es posible que deba pensar detenidamente cuándo y cómo pueden surgir las advertencias (lo que puede llevarlo a refactorizar para eliminarlas).

Como referencia, ADVERTENCIAS DE MUESTRA DE MySQL

Por supuesto, podría prescindir de la consulta inicial para SELECT @@warning_count , lo que le ahorraría una consulta por ejecución, pero lo incluí para completarlo de manera pedante.