Mysql
 sql >> Base de données >  >> RDS >> Mysql

Puis-je détecter et gérer les avertissements MySQL avec PHP ?

Pour que les avertissements soient "signalés" à PHP de manière native, il faudrait modifier le pilote mysql/mysqli, ce qui dépasse évidemment le cadre de cette question. Au lieu de cela, vous devrez essentiellement vérifier chaque requête que vous effectuez sur la base de données pour les avertissements :

$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
}

Évidemment, cela va coûter horriblement cher à appliquer en masse, vous devrez donc peut-être réfléchir attentivement au moment et à la manière dont les avertissements peuvent survenir (ce qui peut vous amener à refactoriser pour les éliminer).

Pour référence, MySQL SHOW WARNINGS

Bien sûr, vous pouvez vous passer de la requête initiale pour le SELECT @@warning_count , ce qui vous éviterait une requête par exécution, mais je l'ai incluse par souci d'exhaustivité pédante.