Mysql
 sql >> Database >  >> RDS >> Mysql

Posso rilevare e gestire gli avvisi MySQL con PHP?

Affinché gli avvisi vengano "contrassegnati" in PHP in modo nativo sarebbero necessarie modifiche al driver mysql/mysqli, che ovviamente va oltre lo scopo di questa domanda. Invece dovrai sostanzialmente controllare ogni query che fai sul database per gli avvisi:

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

Ovviamente questo sarà terribilmente costoso da applicare in massa, quindi potrebbe essere necessario pensare attentamente a quando e come potrebbero sorgere gli avvisi (il che potrebbe portarti a rifattorizzare per eliminarli).

Per riferimento, MySQL SHOW WARNINGS

Ovviamente, potresti fare a meno della query iniziale per SELECT @@warning_count , che ti salverebbe una query per esecuzione, ma l'ho inclusa per completezza pedante.