[Specyfikacja] Klasa DB

0

Ustalilismy juz, ze system powinien wspierac kilka interfejsow baz danych (m.in. MySQL oraz PostgreSQL). W tym celu potrzebowac bedziemy klasy DB ktora spokojnie mozemy zaczerpnac z projektu Coyote.

W calym systemie, glownym plikiem, przechowujacym podstawowa konfiguracje (hasla, nazwe bazy danych) powinien byc plik 'config.php'. W tym pliku powinna znalezc sie rowniez stala okreslajaca warstwe SQL aktualnie uzywana przez system:

DEFINE('SQL_LAYER', 'MySQL);

W glownym katalogu projektu powinien znalezc sie plik 'db.php', ktory w zaleznosci od wybranej warstwy, wlaczy do systemu dany modul, ktory z kolei zawierac bedzie klase DB(). Czyli taka struktura katalogow:

- db/
  - mysql.php
- db.php

Na razie zakladamy, ze korzystamy z MySQL wiec w katalogu db/ mamy jedynie plik mysql.php ktory zawiera wersje klasy db() dla MySQL.

Oto wlasciwosci oraz metody klasy, ktore proponuje, aby sie znalazly w klasie DB():

Klasa DB:

<font size="2" color="darkred">Wlasciwosci:</span>

- query_result
Zmienna $query_result powinna przechowywac identyfikator danego zapytania zwracany przez funkcje PHP - mysql_query().

- sql_query
Tresc zapytania SQL

- connection_id
Identyfikator polaczenia z baza danych

- transaction
Zmienna, ktora moze przybrac true lub false w zaleznosci od tego czy sesja jest wlaczona czy tez nie. To nic, ze na razie MySQL nie obsluguje sesji - jest to raczej myslenie na przyszlosc.

<font size="2" color="darkred">Metody:</span>

- db()
Konstruktor klasy, ktory polaczy sie z baza danych oraz wybierze dana baze.

- sql_query($sql_query, $error = true)
Funkcja ktora na podstawie parametru $sql_query wykona polecenie zawarte w tym zapytaniu. W przypadku wystapienia bledu, jezeli parametr $error == true dzialanie systemu zostanie przerwane, wygenerowany zostanie blad, a sama funkcja zwroci false. Jezeli parametr $error == false, blad nie zostanie wygenerowany, lecz funkcja zwroci false.

- sql_transaction($status = 'BEGIN')
Funkcja ktora rozpocznie transakcje (jezeli parametr to BEGIN), zaakceptuje zmiany (jezeli parametr to COMMIT) oraz cofnie wprowadzone dane (jezeli parametr to ROLLBACK).

- sql_counter()
Funkcja zwroci liczba zapytan skierowanych do bazy danych

- sql_nextid()
Funkcja zwroci ID wstawionego rekordu (wywola funkcja mysql_insert_id() z PHP).

- sql_result()
Funkcja zwroci identyfikator zwrocony po wykonaniu zapytania, przez funkcje mysql_query(). Identyfikator pobrany zostanie z wlasciwosci $query_result.

- sql_affected()
Funkcja zwroci liczbe rekordow uaktuanionych przez baze w wyniku uzycia zapytania UPDATE lub liczbe elementow skasowanych.

- sql_numfields($query_result = 0)
Zwraca liczbe rekordow pobranych przy pomocy zapytania SELECT. Funkcja umozliwi podanie identyfikatora zapytania ($query_result) do ktorego chcemy sie odwolac.

- sql_fetch($query_result = 0)
Pobiera tablice danych z MySQL (wykonuje funkcje mysql_fetch_array() z PHP).

- sql_free($query_result = 0)
Zwalnia zasoby zajete przez dane zapytanie.

- sql_rows($tbl_name, $column = '')
Umozliwia policzenie ilosci rekordow znajdujacych sie w tabeli okreslonej w $tbl_name. Parametr $column umozliwia przekazanie dodatkowego kodu SQL, ktory ograniczy liczbe policzonych rekordow. Np. sql_rows('users', ' WHERE user_id > 100'); W takim wypadku funkcja zwroci ilosc rekordow z tabeli 'users' z pominieciem tych ktorych ID jest mniejsze niz 100.

- sql_error($sql_error)
Formuluje dzinnik ktory zostanie wyswietlony w razie bledu zwiazanego z blednym zapytaniem SQL.

- sql_version()
Zwraca numer wersji systemu bazodanowego.

Jezeli nikt nie ma nic przeciwko to wlasciwie klasa jest juz gotowa.

0

Wrzucilem juz na CVS odpowiednia klase oraz zalazki dokumentacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1