RkBlog

Hardware, programming and astronomy tutorials and reviews.

Obsługa baz SQLite

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"));
Przy łączeniu się z bazą danych podajemy jej nazwę i/lub ze ścieżką do pliku - każda baza to plik z danymi. Jeżeli baza danych/plik nie istnieje to zostanie stworzona. Ważne jest by w katalogu, w którym ma być utworzona mieć prawa zapisu (odpowiednie uprawnienia katalogu)
RkBlog

Podstawy PHP, 14 July 2008, Piotr Maliński

Comment article