Firebird
14 July 2008
Comments
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;
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>';
RkBlog
Comment article