CompZone.Org :: Artykuły :: SQL
Która technologia najbardziej Cię interesuje?
PHP
ASP
AJAX
SQL
JavaScript
Inna
Sonda Wyniki

Add to Google

Obsługa SQLite w PHP

SQLite jest to ostanio coraz bardziej popularny silnik baz danych napisany w C wykorzystujący SQL (strukturalny język zapytań). Nie jest on samodzielnym serwerem baz danych, lecz jedynie biblioteką dołączaną do PHP (posiada również API dla innch języków, jak C++, Java czy Python, ale nie o tym jest artykuł ;)). Ma to oczywiście swoje zalety - jest to bowiem bardzo wydajne rozwiązanie, nawet w przypadku większych, relacyjnych baz, mogące spokojnie konkurować z MySQL i PostgreSQL

Oficjalna strona projektu znajduje się pod adresem www.sqlite.org. Znajdziemy tam dokumentację oraz FAQ, do których możemy zajrzeć w razie ewentualnych problemów z użytkowaniem.

Instalacja SQLite

By móc zacząć zabawę z SQLite pod systemem Windows, należy po pierwsze pobrać odpowiednia bibliotekę DLL np. ze strony PECL (w PHP5 SQLite jest domyślnie zainstalowne, więc posiadacze tej wersji mogą ten punkt pominąć). Pobrany plik kopiujemy do katalogu /php/extensions/. Następnie edytujemy plik php.ini i w sekcji [PHP] dodajemy wpis "extension=php_sqlite.dll". Jeżeli w Windows logujemy się na koncie nieuprzywilejowanym, kolejną i ostatnią rzeczą, jaką musimy zmienić jest plik konfiguracyjny serwera. W przypadku Apache jest to httpd.conf. Dodajemy w nim dyrektywę "SetEnv TMP c:/temp" (katalog c:/temp/ musimy wcześniej utworzyć - będą tam przechoywane tymczasowe pliki SQLite). Restartujemy serwer i możemy przystępować do pracy

W Linuksie instalacja sporwadza się do wydania instalatorowi PEAR polecenia:

pear install sqlite

SQLite w akcji

Chyba najlepiej jest się uczyć na podstawie konkretnych przykładów, więc zaczniemy od razu od kodu, w komentarzach postaram sie wszystko dokładnie wyjaśnić. Uwaga! Nie będą tłumaczone zapytania SQL - o tym zagadnieniu na pewno w najbliższym czasie ukaże się osobny artykuł.

 <?php
$db = sqlite_open('zoo'); //funkcja ta otwiera baze danych lub tworzy ja, jesli taka nie istnieje

//teraz tworzymy tabele, robimy to wysylajac odpowiednie zapytanie SQL za pomoca funkcji sqlite_query
$q=sqlite_query($db,"
CREATE TABLE zwierzeta(
id INTEGER PRIMARY KEY,
imie VARCHAR(64),
gatunek VARCHAR(64),
wiek INTEGER,
pochodzenie VARCHAR(24)
)
");
$q=sqlite_query($db,"
CREATE TABLE personel(
identyfikator INTEGER PRIMARY KEY,
imie VARCHAR(64),
nazwisko VARCHAR(64),
stanowisko VARCHAR(64),
wyplata FLOAT
)
");

//mozemy teraz za pomoca tego samego zapytania dodac do stworzonych tabel zwierzeta i pracownikow
$q=sqlite_query($db,'INSERT INTO zwierzeta VALUES (NULL,'Wiesław', 'Słoń', 14, 'Egipt')');
$q=sqlite_query($db,'INSERT INTO zwierzeta VALUES (NULL,'Arnold', 'Słoń', 30, 'Kongo')');
$q=sqlite_query($db,'INSERT INTO zwierzeta VALUES (NULL,'Józefina', 'Kobra', 4, 'Brazylia')');
$q=sqlite_query($db,'INSERT INTO zwierzeta VALUES (NULL,'Franek', 'Lew', 12, 'Sudan')');
$q=sqlite_query($db,'INSERT INTO zwierzeta VALUES (NULL,'Jacek', 'Aligator', 6, 'USA')');
$q=sqlite_query($db,'INSERT INTO zwierzeta VALUES (NULL,'Andżela', 'Owca', 10, 'Polska')');
$q=sqlite_query($db,'INSERT INTO personel VALUES (NULL,'Jan', 'Kowalski', 'Dyrektor',9999.99)');
$q=sqlite_query($db,'INSERT INTO personel VALUES (NULL,'Anna', 'Nowak', 'Sekretarka',1600)');
$q=sqlite_query($db,'INSERT INTO personel VALUES (NULL,'Marcin', 'Bobkiewicz', 'Opiekun',1200)');
$q=sqlite_query($db,'INSERT INTO personel VALUES (NULL,'Katarzyna', 'Wawrzyniak', 'Opiekun',1200)');
$q=sqlite_query($db,'INSERT INTO personel VALUES (NULL,'Roman', 'Giełtuch', 'Szambiarz',700.50)');

//teraz chcemy np. wybrac i wypisac imiona i wiek wszystkich sloni, robimy to za pomoca zapytania SELECT i funkcji sqlite_fetch_array, ktora zwraca tablice wynikow zapytania
$q=sqlite_query($db,'SELECT imie, wiek FROM zwierzeta WHERE gatunek = 'Słoń'');
while($dane=sqlite_fetch_array($q, SQLITE_ASSOC)){
//w petli wypisujemy dane sloni :)
echo 'Imię: '.$dane['imie'].' Wiek: '.$dane['wiek']."<br>";
}

//poznizsza funkcja zwraca nam ilosc wynikow otrzymanych w zapytaniu
$ilosc=sqlite_num_rows($q);
echo "Znaleziono $ilosc zwierzat.<br>";

//rownie dobrze mzoemy wypisac pracownikow, ktorzy zarabiaja mniej niz 1500 zl
$q=sqlite_query($db,'SELECT * FROM personel WHERE wyplata<1500');
while($dane=sqlite_fetch_array($q, SQLITE_NUM)){
//funkcja print_r pozwala szybko wypisac zawartosc calej tablicy, warto ja zapamietac
print_r($dane);
echo "<br>";
}
//w przypadku funkcji sqlite_fetch_array nalezy wspomniec o jej drugim parametrze. jest on opcjonalny i przyjmuje wartosci: SQLITE_NUM, SQLITE_ASSOC, SQLITE_BOTH (domyslny). okresla on, w jaki sposob dostepne beda dane w naszej tablicy, odpowiednio:numerycznie, pod nazwami slownymi (asocjacyjnie), na oba te sposoby
?>

Jak widać, funkcje używany w SQLite sa prawie analogiczne do tych z MySQL. Sprawia to, że osoba doświadczona w używaniu tego typu baz danych z łatwością odnajdzie się w nowym środowisku.

I jeszcze na koniec wspomnę o jednej przydatnej rzeczy. Otóż, nie jest konieczne definiowanie typu pola podczas tworzenia tablicy. Przy umieszczaniu danych w bazie SQLite potrafi sam rozpoznać typ. Mała rzecz, a cieszy :). Jeżeli jednak chcemy podać typ pola, nic nie stoi na przeszkodzie. Nazwy typów prezentują się następująco: VARCHAR, NVARCHAR, TEXT, INTEGER, FLOAT, BOOLEAN, CLOB, BLOB, TIMESTAMP, NUMERIC, VARYING CHARACTER, NATIONAL VARYING CHARACTER.

michalg @ 30-06-2006 17:12
Brak komentarzy...
Copyright © 2005-2006 Compzone.Org. Kopiowanie i wykorzystywanie materiałów zawartych na tej stronie bez zgody autora zabronione!