Mislim da je najbolja praksa da greske ne prikazujes korisnicima (php-ove greske tipa E_WARNING ili E_NOTICE), za ovim nema potrebe, cak je veoma lose, jer ti odaje podatke o strukturi i nacinu pisanja aplikacije, te bi neko sa vise iskustva mogao lakse da ti napadne sajt. Kao sto je skoro bilo na blic.co.yu, gde se video ceo upit, sta se i kako izvrsava. Cak je mozda mogao i obican mysql injection da prodje. Svoje 'custom' greske (tipa: uneli ste pogresnu vrednost itd.) prikazujes u nekom info panelu (pogledaj kako to recimo google radi u mail-u, kad posaljes mail) a njihovo prevodjenje je vec za drugu temu.
A sto se tice losih upita, toga u dobroj aplikaciji nema
. Debugovanje je podjednako vazna faza razvoja kao sto je i projektovanje, a mozda cak i vaznija. Sam probas da srusis sopstvene upite, i onda sam 'hendlujes' greske koje nastaju, tj. ti i dalje vodis aplikaciju u pravom smeru, ne prepustas slucaju.
Za ukljucivanje i iskljucivanje gresaka je najbolje da pogledas, naravno, php.net i sve funkcije koje sadrze 'error' u nazivu, a najkorisnija je error_reporting(); koju koristis tako sto postavis error_reporting(E_ALL); na pocetku dok razvijas samu aplikaciju, a cim krene live, setujes je na error_reporting(0); Naravno, pogledaj manual o ovome i o drugim funkcijama (error)log na primer).