System RoadRunner oparty jest o architekturę wielowarstwową. Oznacza to, że należy oddzielić warstwę prezentacji danych, logiki oraz przechowywania danych. Klasa DB służy do operowania na bazie danych. Zapewnia funkcje umożliwiające wysłanie zapytania czy zwrócenie wyników z bazy w postaci tablicy. System RoadRunner zaprojektowany został w ten sposób, iż umożliwia obsługę różnych baz danych, lecz obecnie zaimplementowana jest jedynie klasa do obsługi bazy MySQL.
Więcej informacji na temat MySQL, znajdziesz na stronie www.mysql.com.
Klasa DB obsługująca MySQL, zadeklarowana jest w pliku include/db/mysql.php.
function db($sql_server, $sql_login, $sql_password, $database, $port = false)
Jest to konstruktor klasy DB. Pierwszym parametrem tej funkcji jest host na którym znajduje się baza danych. Drugi to nazwa użytkownika, hasło oraz nazwa bazy danych. Ostatni parametr (opcjonalny) umożliwia nadanie portu na którym działa baza danych. Jeżeli nie podasz trzeciego parametru, użyty zostanie domyślny port.
Jeżeli połączenie nie powiedzie się, wywołana zostanie funkcja sql_error() która sformułuje odpowiedni komunikat błędu. Następnie, metoda sql_error() taki komunikat przekazuje funkcji PHP: trigger_error().
Jeżeli funkcja zostanie wykonana poprawnie, ID połączenia zostanie przypisany do właściwości $connection_id.
Zamyka połączenie z bazą danych, wywołuje funkcję PHP: mysql_close().
function sql_query($sql_query, $error = true)
Najczęściej używana funkcja, z klasy DB. Wysyła do bazy zapytanie SQL, określone w parametrze $sql_query. Przed wysłaniem zapytania, funkcja sprawdza, czy zapytanie nie jest puste (wówczas generuje odpowiedni błąd). Po wysłaniu zapytania, sprawdzane jest czy zakończyło się poprawnie. Jeżeli nie - generowany jest błąd (jeżeli wartość parametru $error to true). Jeżeli zapytanie zakończyło się poprawnie, do właściwości $query_result przypisywany jest rezultat zapytania.
Jeżeli zapytanie zakończyło się poprawnie, zwiększana jest wartość właściwości $query_counter. Dodatkowo przed i po wykonaniu zapytania, wywoływana jest metoda sql_report() która mierzy czas przed i po zapytaniu. Dzięki temu jesteśmy w stanie stwierdzić jak długo MySQL, wykonywał dane zapytanie.
Funkcja zwraca true lub false w razie poprawnego wykonania zapytania lub błędu.
function sql_build_query($table_name, $sql_array)
Metoda sql_build_array() służy do budowania zapytania INSERT. Na podstawie tablicy $sql_array oraz nazwie tabeli ($table_name) budowane jest zapytanie INSERT. Dodatkowo funkcja chroni przed sql injection sprawdzając typ elementów w tablicy asocjacyjnej $sql_array i w razie konieczności wywołuje metodę sql_escape() lub rzutowanie.
Metoda wywołuje funkcję mysql_escape_string() zapobiegając tym samym sqj injection.
function sql_fetchfield($field_name, $field_row = 0, $query_result = 0)
Na podstawie ID zapytania ($query_result) dokonuje pobrania jednego pola z bazy danych. Pierwszy parametr $field_name to nazwa pola; $field_row to numer wierwsza ze zbioru danych.
function sql_transaction($status = 'BEGIN')
Funkcja służy do obsługi transakcji. Parametr $status może przyjąć trzy wartości: BEGIN, COMMIT oraz ROLLBACK. W przypadku wartości BEGIN, transakcja zostaje rozpoczęta, natomiast właściwość $transaction zmienia wartość na true. Wartość COMMIT akceptuje transakcje i zmienia wartość $transaction na false. Wartość ROLLBACK wycofuje wszelkie zmiany i również zmienia wartość $transaction na false.
Funkcja sql_counter() zwraca liczbę zapytań skierowanych w danym momencie do bazy. W rzeczywistości zwraca wartość właściwości $query_counter.
Bardzo często, w tabelach stosowana jest unikalna kolumna typu auto_increment, której wartość zostaje zwiększana automatycznie przez bazę danych. Funkcja sql_nextid() zwraca właśnie numer ID, nowo wstawionego rekordu.
Funkcja zwraca rezultat danego zapytania, uzyskany przez funkcję mysql_query().
Funkcja nie przyjmuje żadnych parametrów, zwraca jedynie ilość uaktualnionych lub usuniętych rekordów, wykonanych w ostatnim zapytaniu.
function sql_numfields($query_result = 0)
Funkcja sql_numfields() umożliwia pobranie ilości rekordów, zwróconych przez zapytanie SELECT. Dodatkowo, parametr $query_result może przybrać identyfikator wyniku, zwracany przez metodę sql_result(). Jeżeli parametr nie zostanie podany, zostanie użyta domyślna wartość z właściwości $query_result.
function sql_fetch($query_result = 0)
Funkcja zwraca tablicę zwróconą przez bazę na podstawie zapytania SELECT. Możliwe jest nadanie właściwości parametrowi $query_result (identyfikator wyniku) lecz jest to wartość opcjonalna (jeżeli nie poda się tej wartości zostanie użyta wartość z właściwości $query_result).
function sql_free($query_result = 0)
Funkcja zwolni pamięć przydzieloną danemu wskaźnikowi wyniku.
function sql_rows($tbl_name, $column = '')
Funkcja sql_rows() stanowi prosty, szybki sposób na pobranie ilości rekordów znajdujących się w danej tabeli. Pierwszym parametrem musi być nazwa tabeli; drugi parametr jest opcjonalny. Można w nim wpisać dodatkowe frazy które zostaną doklejone do zapytania SQL. Mają one na celu zawężenie rezultatu.
$db->sql_rows('coyote_users', ' WHERE user_level = 1');
Powyższa instrukcja pobiera ilość rekordów z tabeli coyote_users, w których kolumna user_level równa jest 1.
Funkcja służy do sporządzania raportów dotyczących poszczególnych zapytań SQL. Notowana jest treść zapytania oraz czas przed i po wykonaniu zapytania. Dzięki temu jesteśmy w stanie sprawdzić jak długo zajęło bazie danych, wykonanie danego zapytania. Funkcja jest używana przede wszystkim wewnętrznie, przez klasę. Użytkownicy klasy, powinni wywoływać tę metodę z parametrem 'explain':
print_r($db->sql_report('explain'));
Takie instrukcje spowodują wyświetlenie tablicy z danymi dotyczącymi zapytań.
function sql_error($sql_error)
Funkcja formułuje komunikat błędu SQL. Funkcja jest wywoływana wyłączenie w przypadku błędnego zapytania SQL lub niemożności połączenia się z serwerem. Następnie tak sformułowany komunikat jest przekazywany do funkcji trigger_error().
W funkcji następuje cofnięcie transakcji.
Zwraca wersję systemu bazy danych.