Firebird

Firebird to relacyjna baza danych powstała po otworzeniu komercyjnej bazy danych - Interbase. Jest lekka, ma małe wymagania, jest nowoczesna, posiada szeroką implementację języka SQL i wiele innych zalet, chociaż dla przeciętnego zjadacza PHP/MySQL zbyt przyjazna nie będzie. Firebirda można łatwo zainstalować w MS Windows, równie łatwo pod linuksem (jeżeli dana dystrybucja ma ją w postaci pakietu).

TWORZENIE BAZY DANYCH

Zaczynamy od namierzenia miejsca, w którym zainstalowany jest Firebird. Dla Gentoo jest to /opt/firebird. Przechodzimy do katalogu /opt/firebird/bin i jako root wydajemy polecenie:
./isql
Tworzymy bazę danych wpisując:
SQL> CREATE DATABASE './foo.fdb'
CON> user 'SYSDBA' password 'masterkey';
SQL> quit;
Stworzony zostanie plik foo.fdb - plik baza danych. Możemy go przenieść np. do katalogu użytkownika. SYSDBA to domyślny użytkownik Firebirda, masterke (lub masterkey) to domyślne jego hasło.

PHP i FIREBIRD

Oto prosta klasa obsługująca bazę Firebird. Firebird korzysta z funkcji ibase_* (interbase). Dostępny jest też driver do PDO, lecz na chwilę obecną nie jest chyba zbyt stabilny.
<?php
class firebird_db
	{
	public function connect($host, $user, $password)
		{
		IF(!$this->f = ibase_connect($host, $user, $password))
			{
			$this->error = true;
			throw new Exception('Błąd Połączenia z Bazą Danych');
			}
		$this->firebird = ibase_trans($this->f);
		}
	public function query($query)
		{
		IF(!ereg('SELECT', $query) and !$this->error)
			{
			IF(!$result = ibase_query($this->firebird, $query))
				{
				$this->error = true;
				throw new Exception('Błąd wykonania zapytania - ('.$query.') - '.ibase_errmsg());
				}
			else
				{
				return true;
				}
			}
		}
	public function query_select($query)
		{
		IF(!$this->error)
			{
			IF(!$result = ibase_query($this->firebird, $query))
				{
				$this->error = true;
				throw new Exception('Błąd wykonania zapytania - ('.$query.') - '.ibase_errmsg());
				}
			while($row = ibase_fetch_row($result))
				{
				$return[] = $row;
				}
			unset($result);
			unset($row);
			return $return;
			}
		}
	function __destruct()
		{
		IF(!$this->error)
			{
			ibase_commit($this->firebird);
			}
		else
			{
			ibase_rollback($this->firebird);
			}
		ibase_close($this->f);
		unset($this->f);
		unset($this->error);
		unset($this->firebird);
		}
	}
$f = new firebird_db();
// host:ścieżka/do/pliku
$f->connect('localhost:/home/piotr/html/foo.fdb', 'SYSDBA', 'masterke');
$f->query("CREATE TABLE foo (id int, tekst varchar(1000))");
$f->query("INSERT INTO foo VALUES ('1', 'bla bla bla')");
$f->query("INSERT INTO foo VALUES ('2', 'bla2 bla2 bla')");
$f->query("INSERT INTO foo VALUES ('3', 'bla3 bla3 bla')");
$f->query("INSERT INTO foo VALUES ('4', 'bla4 bla4 bla')");
echo '<pre>';
print_r($f->query_select("SELECT * FROM foo"));
echo '</pre>';
Głównym problemem dla "początkujących" jest brak pola automatycznie zwiększającego swoją wartość (auto_increment, serial itd.) By takie pole otrzymać trzeba stosować generatory. Składnia SQL różni się nieco od składni w innych bazach danych. Zainteresowani dalszą nauką mogą pobrać (po darmowej rejestracji) artykuł z PHPSolutions (po polsku) stąd. Oprócz tego google i artykuły anglojęzyczne.
RkBlog

PHP w Akcji, 14 July 2008

Comment article
Comment article RkBlog main page Search RSS Contact