Obsługa baz SQLite
14 July 2008
Comments
SQLite to prosta baza danych dostępna bezpośrednio w PHP5. Nie oferuje aż tylu możliwości co MySQL i inne bazy relacyjne lecz w wielu przypadkach jest bardzo poręczna. Dodawanie danych do SQLite zajmuje znacznie więcej czasu niż np. dla baz MySQL, lecz pobieranie danych jest znacznie szybsze i wydajniejsze. W PHP5 mamy dwa sposoby obsługi SQLite - model obiektowy i model proceduralny. Poniższa klasa korzystaz z modelu obiektowego:
<?php
class sqlite
{
public function __construct($dbname)
{
try
{
// Tworzymy lub otwieramy istniejącą bazę danych
$this->sqlite = new SqliteDatabase($dbname);
}
catch (SQLiteException $error)
{
$this->error = true;
echo 'Błąd Połączenia z Bazą Danych - '.$error->getMessage();
sqlite::__destruct();
exit();
}
$this->sqlite->query('BEGIN;');
}
public function query($query)
{
IF(!ereg('SELECT', $query) and !$this->error)
{
IF(!$this->sqlite->query($query))
{
$this->error = true;
echo 'Błąd wykonania zapytania - '.$query.'<BR> - '.sqlite_error_string($this->sqlite->lastError());
sqlite::__destruct();
exit();
}
}
}
public function query_select($query)
{
$result = $this->sqlite->arrayQuery($query, SQLITE_ASSOC);
IF(!is_array($result))
{
$this->error = true;
echo 'Błąd wykonania zapytania - '.$query.'<BR> - '.sqlite_error_string($this->sqlite->lastError());
sqlite::__destruct();
exit();
}
IF(count($result) == 0)
{
$result = '';
}
return $result;
}
public function insert_id()
{
return $this->sqlite->lastInsertRowid();
}
public function escape($string)
{
return $this->sqlite->escapeString($string);
}
function __destruct()
{
IF(!$this->error)
{
$this->sqlite->query('COMMIT;');
}
else
{
$this->sqlite->query('ROLLBACK;');
}
unset($this->sqlite);
unset($this->error);
}
}
// Przykład
$sqlite = new sqlite('baza');
$sqlite->query("CREATE TABLE rk_pages ( page_id INTEGER NOT NULL , page_title varchar(255) default NULL, page_desc text, page_content longtext, PRIMARY KEY (page_id))");
$sqlite->query("INSERT INTO rk_pages (page_title, page_desc, page_content) VALUES ('tytul', 'opis', 'treść')");
echo '<pre>';
print_r($sqlite->query_select("SELECT * FROM rk_pages"));
RkBlog
Comment article