Класс, который работает с mysql
1 <?php 2 require_once("config.php"); 3 require_once("log.php"); 4 class MySQL{ 5 var $link, $result,$logger; 6 7 function MySQL() { 8 // constructor 9 $config=new Config(); 10 $conf=$config->getconfig(); 11 $this->logger=new Log(); 12 $this->link=@mysql_pconnect( 13 $conf["sql"]["host"], 14 $conf["sql"]["user"], 15 $conf["sql"]["password"]); 16 if(!$this->link) { 17 $this->logger->Add("Cannot connect to MySQL. Reason: ".mysql_error()); 18 exit(1); 19 } 20 if(!@mysql_select_db($conf["sql"]["database"],$this->link)) { 21 $this->logger->Add("Cannot change database. Reason: ".mysql_error()); 22 } 23 } 24 25 function query($query) { 26 if(!$this->result = @mysql_query($query, $this->link)) { 27 $this->logger->Add("Query '".$query."' failed. Reason: ".mysql_error()); 28 } 29 } 30 31 function fetch() { 32 return @mysql_fetch_array($this->result,MYSQL_NUM); 33 } 34 35 function clean() { 36 return @mysql_free_result($this->result); 37 } 38 39 } 40 ?>
7-23 - конструктор, который цепляется к серверу и оставляет в $link хендл для работы с сервером. Если что не так, останавливает всё.
25-29 - запрос к серверу (в случае недачи - в лог)
31-33 - получение результатов
35-37 - приборка за собой.
По идее, гораздо лучше при невозможности соедениться возвращать код ошибки "наверх", но я пока не решил, где лучше сделать обработчик ошибок.