dziala w php4, zawiera raportowanie bledow, posiada mozliwosc wyboru pomiedzy buforowaniem zapytan, potrafi cacheowac zapytania, i ma wsparcie dla transakcji.
chetnie uslysze co jest nie tak oraz co mozna ulepszyc.
przyklad uzycia
<?php $db = new sqlklasa(DB_HOST,DB_LOGIN,DB_PASS,DB_NAME); if($validator->ok['login'] && $validator->ok['password']){ $db->fetcharray('SELECT * FROM '.DB_PREFIX.'users WHERE login='.$db->sqlquote($input->post('login')).' AND pass='.$db->sqlquote(md5($input->post('password')))); $_SESSION['user']=$db->rekordy[0]; $db->zapytaj('UPDATE '.DB_PREFIX.'users SET data_ostatniego_logowania='.time().' WHERE id='.$_SESSION['user']['id']); } } ?>
<?php /** * Tworzy polaczenie do bazy i zapewnia uniwersalny interfejs zapytan * @author ergo * @version 1.0 * @access public */ class sqlklasa { /** * nazwa bazy * * @var integer */ var $baza; /** * ilosc wykonanych zapytan * * @var integer */ var $zapytan; /** * wynik wykonania zapytania * * @var mixed */ var $wynik; /** * rekordy zwrocone przez serwer sql * * @var array */ var $rekordy; /** * identyfikator polaczenia sql * * @var unknown_type */ var $link; /** * tablica zawierajaca blednie wykonane zapytania * * @var array */ var $error; /** * tablice zawierajaca dobrze wykonane zapytania * * @var array */ var $sql; /** * buforujemy czy nie * * @var boolean */ var $buffered; /** * postarcza polaczenia z baza danych * * @param string $host * @param string $login * @param string $pass * @param string $baza */ function sqlklasa($host, $login, $pass, $baza) { $this->baza = $baza; $this->buffered = false; if (!$this->link) { } if (!$db_selected) { } } /** * rozpoczyna transakcje */ function rozpocznij_transakcje(){ $this->zapytaj('SET AUTOCOMMIT = 0'); $this->zapytaj('BEGIN'); } /** * zakoncza transakcje */ function zakoncz_transakcje(){ $this->zapytaj('ROLLBACK'); }else{ $this->zapytaj('COMMIT'); } } /** * wykonuje zapytanie do bazy * * @param string $zmienna */ function zapytaj($zmienna) { if (!$db_selected) { } $this->zapytan++; $this->rekordy = NULL; if($this->buffered==false){ }else{ } if ($this->wynik === false) { return false; } else{ $this->sql[]=$zmienna; return $this->wynik; } } /** * pobiera dane jako tablice * @param string $zmienna * @param integer $cached [opcja] * @param string $gdzie [opcja] */ function fetcharray($zmienna,$cached=false,$gdzie=NULL) { if (!$db_selected) { } if(is_integer($cached) && !empty($gdzie) && (@filemtime(KATALOG_CACHE.$gdzie.'.sqlcache')>time()-$cached)) { $this->sql[]=$zmienna; } else{ $this->rekordy = NULL; $this->zapytaj($zmienna); $this->rekordy[] = $wiersz; } } } } /** * zwalnia wynik zapytania z pamieci * */ function zwolnij() { } /** * zamyka polaczenie z baza * */ function zamknij() { } /** * zabezpiecza zmienna przed sql injection * * @param string $zmienna * @return string */ function sqlquote($zmienna) { } } return $zmienna; } ?>