CompZone.Org :: Artykuły :: SQL
Pytania w drugiej edycji Testu PHP powinny być:
Trudniejsze
Łatwiejsze
Skomplikowane
Na myślenie
Do liczenia
Sonda Wyniki

Add to Google

Korzystanie z txtSQL

txtSQL jest to napisany w PHP skrypt (a właściwie klasa) bazy danych oparty na plikach tekstowych. Oznacza to, że używając go, możemy się cieszyć podstawową funkcjonalnośćią baz danych, bez koniecznoiści posiadania zainstalowanego MySQL, PostgreSQL czy Oracle

Zalety i wady

Największą zaletą txtSQL jest wcześniej wymianiona cecha - w miarę dobrze potrafi zastąpić profesjonalne bazy danych. Ponadto skrypt jest prosty w konfiguracji i użyciu, w sam raz nadaje się do oparcia na nim średnio rozbudowanej strony, która nie będzie generowałą dużych ilości zapytań SQL.
Jak łatwo się domyślić, rozwiązanie takie jak txtsQL pod wzgędem wydajności wypada raczej słabo. Jest to tylko skrypt PHP, a nie samodzielna aplikacja. Siłą rzeczy musi więc działać wolniej. Powoduje to, że przy rozbudowanych stronach o sporej ilośći treści i generujących dużo zapytań, txtSQL po prostu nie wyrabia.

Sposób użycia

Po pierwsze skrypt należy ściągnąć z tej strony. W obecnej chwili ostatnią stabilną wersją txtSQL jest 2.2Final, toteż na niej oparte są wszystkie poniższe przykłady. Zawartość pobranego archiwum rozpakowujemy do folderu ze stroną. Ktalogowi 'data' nadajemy CHMOD 777.

Przykład skryptu:

 <?php
include('./txtSQL.class.php'); //dolaczamy plik ze skryptem bazy do naszego skryptu
$sql = new txtSQL('./data'); //tworzymy obiekt klasy txtSQL o nazwie 'sql'
$sql->connect('root', ''); // laczymy sie z baza (z uzyciem domyslnych danych)
$sql->createdb(array('db' => 'test')) or die('Blad przy tworzeniu bazy, komunikat bledu txtSQL: '.$sql->get_last_error()); //tworzymy baze danych
$sql->selectdb('test'); //wybieramy baze dancyh
//tworzymy nowa tabele w bazie
$columns = array('id' => array('type' => 'int', 'auto_increment' => 1, 'permanent' => 1),
'name' => array('type' => 'string', 'max' => 50),
'email' => array('type' => 'string', 'max' => 50)
);

$sql->createtable(array('db' => 'test',
'table' => 'test',
'columns' => $columns));
//przygotowujemy dane do wstawenia do bazy
$values = array('id' => 2,
'name' => 'John Smith',
'email' => 'john@smith.com'
);
//dodajemy dane do tabeli za pomoca metody insert
if ( !$sql->insert(array('db' => 'test',
'table' => 'test',
'values' => $values)) )
{
die('Blad, komunikat: '.$sql->get_last_error());
}

//teraz sposob pobierania danych
$results = $sql->select(array(
'db' => 'test', // Ta linia nie jest konieczna, bo baza zostala juz wybrana wczesniej
'table' => 'test', //wybieramy tabele
'where' => array('id = 2', 'and', 'name =~ John Smith'), //warunki pobrania danych, podajemy jako tablice
'limit' => array(0, 100) //limit rekordow, podajemy jako tablice
));
foreach ( $results as $key => $row )// w petli mozemy wypisac pobrane dane
{
print "ID: $row[id], NAME: $row[name]<BR>n";
}
$sql->disconnect(); //rozlaczamy sie
?>

Jak widać, w posługiwaniu się metodami txtSQL używa się 'tworu' zbliżonego do języka zapytań SQL, jednak opartego na tablicach. Dlatego dobrze jest znać ów język i wiedzieć, jak funkcjonują wspomniane tablice (zapraszam do lektury manuala).

Opis podstawowych metod:

Teraz przedstawię kilka metod a poniżej ich sposób uzycia:
  • void createdb ( array( 'db' => $db ) ) - tworzy nową bazę danych
 <?php
$sql->createdb(array('db' => 'testDatabase')) or die('Blad przy tworzeniu bazy, komunikat bledu txtSQL: '.$sql->get_last_error());
?>
  • void selectdb ( $database ) - wybiera bazę danych w celu dalszego użycia
 <?php
if ( !$sql->selectdb('testDB') )
{
print 'Baza nie moze zostac wybrana, komunikat bledu txtSQL: '.$sql->get_last_error();
}
?>
  • void dropdb ( array( 'db' => $db ) ) - usuwa bazę danych
 <?php
if ( !$sql->dropdb(array('db' => 'testDatabase')) )
{
die('Nie mozna usunac bazy, komunikat: '.$sql->get_last_error());
}
?>
  • void createtable ( array ('table' => $tablename, 'columns' => $columns [, 'db' => $db]) ) - tworzy tabele w bazie
 <?php
$columns = array('id' => array('type' => 'int', 'auto_increment' => 1, 'permanent' => 1),
'name' => array('type' => 'string', 'max' => 50),
'email' => array('type' => 'string', 'max' => 50)
);

$sql->createtable('db' => 'testDb',
'table' => 'testTable',
'columns' => $columns);
?>
  • void droptable ( array ('table' => $table [, 'db' => $db]) ) - usuwa tabelę z bazy
 <?php
if ( !$sql->droptable(array('db' => 'testDb',
'table' => 'testTable')) )
{

die('Blad przy usuwaniu tabeli, komunikat: '.$sql->get_last_error());
}
?>
  • mixed select ( array( 'table' => $table [, 'select' => $selectCols[, 'db' => $db [, 'where' => $where [, 'limit' => $limit [, 'orderby' => $orderb[, $distinct = $column]]]]] ) ) - zwraca wybrane dane z tabeli
 <?php
$data = $sql->select(array(
'db' => 'testDB',
'table' => 'testTable',
'where' => array('strtolower(somecolumn) = value'),
'limit' => array(10, 19),
'orderby' => array('id', 'ASC')
));

foreach ( $data as $key => $row )
{
print 'Row '.$key.': '.print_r($row,1)."<br>n";
}
?>
  • void insert( array( 'table' => $table, 'values' => $values [, 'db' => $db] ) ) - wstawia rekord do tabeli
 <?php
$values = array('id' => 2,
'name' => 'John',
'lastname' => 'Doe',
'Age' => 22);

if ( !$sql->insert(array('db' => 'testDB',
'table' => 'testTable',
'values' => $values)) )
{
die('Blad, komunikat: '.$sql->get_last_error());
}
?>
  • int update ( array( 'table' => $table, $where => $where, 'values' => $values [, 'limit' => $limit [, 'db' => $db]] ) ) - zmienia dane w wybranych rekoradch tabeli
 <?php
$values = array('totalposts' => 244,
'email' => 'John@doe.com');

if ( !$sql->update(array('db' => 'testDB',
'table' => 'testTable',
'where' => array('strtolower(name) = john doe'),
'values' => $values,
'limit' => array(0))) )
{
die('Blad, komunikat: '.$sql->get_last_error());
}
?>
  • int delete ( array( 'table' => $table, $where => $where, [, 'limit' => $limit [, 'db' => $db]] ) ) - usuwa wybrane rekordy z tabeli
 <?php
$deleted =
$sql->delete(array('db' => 'testDB',
'table' => 'testTable',
'where' => array('id <= 294'),
'limit' => array(10, 19)));

echo 'Usunieto '.$deleted.' rekordy';
?>
  • string get_last_error() - pobiera ostatni komunikat błędu txtSQL
 <?php
$sql->strict(0);
if ( !$sql->selectdb('testDb') )
{
die('Blad podczas wybierania bazy, komunikat bledu txtSQL: '.$sql->get_last_error());
}
?>

Źródła

Przykłady pochodzą z dokumentacji txtSQL (polecam zajrzeć tam, jeżeli potrzebne będą Ci opisy innych funkcji).

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