sql >> Database >  >> RDS >> Mysql

Kan ik MySQL-waarschuwingen detecteren en afhandelen met PHP?

Om waarschuwingen native naar PHP te laten "vlaggen", zijn er wijzigingen nodig in het mysql/mysqli-stuurprogramma, wat uiteraard buiten het bestek van deze vraag valt. In plaats daarvan moet je in principe elke vraag die je in de database stelt controleren op waarschuwingen:

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

Het is duidelijk dat dit verschrikkelijk duur zal zijn om massaal toe te passen, dus je moet misschien goed nadenken over wanneer en hoe waarschuwingen kunnen optreden (wat ertoe kan leiden dat je moet refactoren om ze te elimineren).

Ter referentie:MySQL SHOW WAARSCHUWINGEN

Natuurlijk kunt u afzien van de eerste zoekopdracht voor de SELECT @@warning_count , wat u een zoekopdracht per uitvoering zou besparen, maar ik heb het opgenomen voor de pedante volledigheid.



  1. Alle niet-vertrouwde beperkingen voor externe sleutels in SQL Server retourneren (T-SQL-voorbeeld)

  2. Hoe INSTR() werkt in MariaDB

  3. Tabel maken in MySQL die overeenkomt met een andere tabel?

  4. Twee tabellen vergelijken in MySQL