Mrzí mě, že hned pět diskutujících (PD., Lukoko, Michaels, efesak, cpt_nemo) si v článku nevšimlo myšlenky, že ošetřovat chyby přímo v kódu není ve většině případů ten nejlepší způsob. Když se kód pro ošetření standardních chyb umístí do zvláštní funkce, jednak se tím zdroják zpřehlední a jednak získáme možnost ošetřovací kód měnit podle potřeby. Všechny zmíněné způsoby jsou jen variantou toho samého nešikovného přístupu:
<?php if (!mysql_query("SELECT * FROM tabulka")) { echo "Chyba v SQL dotazu!\n"; } $RS = @mysql_query($SQLText) or die("Chyba SQL dotazu"); ?>
Ošetření chyb mimo hlavní kód kromě už zmíněných výhod dává možnost zpracování chyb v závislosti na prostředí:
<?php function mysql_q($query, $ignored = array()) { $result = mysql_query($query); if (!$result && !in_array(mysql_errno(), $ignored)) { if (DEBUG) { echo "Error in $query: " . mysql_error() . "\n"; } else { // poslání mailem, zápis do logu, ... } } return $result; } ?>
Podobný přístup je i využití direktivy mysql.trace_mode, která z SQL chyb vytvoří standardní PHP chyby, které můžeme ošetřovat stejným způsobem jako normální PHP chyby (v testovacím prostředí vypisovat, v provozním ukládat do logu).