Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann ich MySQL-Warnungen mit PHP erkennen und behandeln?

Damit Warnungen nativ für PHP "markiert" werden, wären Änderungen am mysql/mysqli-Treiber erforderlich, was offensichtlich den Rahmen dieser Frage sprengen würde. Stattdessen müssen Sie im Grunde jede Abfrage, die Sie in der Datenbank durchführen, auf Warnungen überprüfen:

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

Offensichtlich wird es furchtbar teuer sein, dies massenhaft anzuwenden, also müssen Sie möglicherweise sorgfältig darüber nachdenken, wann und wie Warnungen auftreten können (was dazu führen kann, dass Sie sie umgestalten, um sie zu beseitigen).

Als Referenz MySQL SHOW WARNINGS

Auf die initiale Abfrage nach SELECT @@warning_count könnte man natürlich verzichten , was Ihnen eine Abfrage pro Ausführung ersparen würde, aber ich habe es der pedantischen Vollständigkeit halber eingefügt.