sql >> Database >  >> RDS >> Mysql

mysqli of sterven, moet het sterven?

Moet het sterven

Integendeel, het mag niet or die() ooit.
PHP is een taal van slechte erfelijkheid. Zeer slechte erfelijkheid. En or die() met een foutmelding als een van de ergste beginselen:

  • die geeft een foutmelding en onthult een aantal interne onderdelen van het systeem aan een potentiële aanvaller
  • het verwart onschuldige gebruikers met vreemde berichten en laat ze geen interface achter om mee te werken, zodat ze waarschijnlijk gewoon afhaken.
  • het doodt het script in het midden, dus het kan ervoor zorgen dat een gescheurd ontwerp (of helemaal geen ontwerp) wordt weergegeven (d.w.z. een onvolledige weergave van de pagina die de gebruiker heeft aangevraagd)
  • het script onherstelbaar doden. Hoewel een gegooide uitzondering kan worden opgevangen en gracieus kan worden afgehandeld
  • die() geeft je geen hint van de plaats waar de fout is opgetreden . En in een relatief grote applicatie zal het lastig zijn om het te vinden.

Gebruik dus nooit die() met MySQL-fouten, zelfs voor de tijdelijke foutopsporing :er zijn betere manieren.

In plaats van handmatig op de fout te controleren, configureert u mysqli om uitzonderingen op fouten te genereren, door de volgende regel toe te voegen aan uw verbindingscode

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

en schrijf daarna elk mysqli-commando zoals het is, zonder or die of iets anders:

$result = mysqli_query($link, $sql);

Deze code genereert een uitzondering in geval van een fout en u wordt dus altijd op de hoogte gehouden van elk probleem zonder een enkele regel extra code.

Een meer gedetailleerde uitleg over hoe u uw foutrapportageproductie klaar, uniform en algemeen verstandig kunt maken terwijl u uw code veel schoner maakt, kunt u vinden in mijn artikel over PHP-foutrapportage .



  1. Update-instructie met inner join op Oracle

  2. PostgreSQL Cloud Vendor Lock-in vermijden

  3. Formules om geografische nabijheid te berekenen

  4. Hoe een CSV-bestand in PostgreSQL te importeren