co sadzicie o takim podejsciu do biblioteki obslugujacej baze ?
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')))); if(!empty($db->rekordy)){ $_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(){
if(!empty($this->error)){ $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) {
}
$this->sql[]=$zmienna;
}
else{
$this->rekordy = NULL;
$this->zapytaj($zmienna);
$this->rekordy[] = $wiersz;
}
$handle = fopen(KATALOG_CACHE
.$gdzie.'.sqlcache', 'wb'); }
}
}
/**
* 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;
}
?>
Ten post edytował ergo 8.07.2006, 11:30:48