VgtMysql
Klasa ma na celu obsługę połączenia z bazą MySql. Dokumentacja zawiera komplet informacji na temat klasy, poniżej kilka przykładów jej użycia:
Jak zacząć
Na początek należy utworzyć obiekt klasy VgtMysql i nawiązać połączenie z bazą:
<?php
require './VgtMysql.php';
$oDb = new VgtMysql();
$oDb->connect(DB_HOST, DB_USER, DB_PASS)
or die('Nie mozna polaczyc');
$oDb->selectDb(DB_NAME)
or die ('nie mozna wybrac bazy');
?>
Wykonywanie zapytań
Jeżeli nawiązanie połączenia zakończy się sukcesem, obiekt jest gotowy do wykonywania zapytań:
<?php
$sQuery = 'create temporary table `test` (';
$sQuery.= 'id_test int unsigned not null auto_increment primary key, ';
$sQuery.= 'liczba int not null default 0, ';
$sQuery.= 'tekst varchar(255) not null';
$sQuery.= ')type=innodb';
$oDb->query($sQuery);
?>
<?php
$sQuery = 'insert into `test` ';
$sQuery.= '(`liczba`, `tekst`) values ';
$sQuery.= '(1, "jeden"), (2, "dwa"), (3, "trzy")';
$oDb->query($sQuery);
?>
mysql_insert_id
Aby uzyskać klucz ostatnio dodanego rekordu, należy skorzystać z metody id():
<?php
$sQuery = 'insert into `test` ';
$sQuery.= '(`liczba`, `tekst`) values ';
$sQuery.= '(21, "test")';
$oDb->query($sQuery);
$iQueryId = $oDb->id();
?>
Zawartość zmiennej $iQueryId, po wykonaniu powyższego kodu: 4
Select
Aby pobrać kolejne wiersze zapytania select, należy skorzystać z metody nextRecord(). Aby uzyskać ilość wierszy zwróconych przez zapytanie, należy wywołać metodę numRows().
<?php
$sQuery = 'select id_test, liczba, tekst ';
$sQuery.= 'from `test` ';
$sQuery.= 'where id_test % 2 = 0';
$aWyniki = array();
if ($oDb->query($sQuery))
while ($aWiersz = $oDb->nextRecord())
$aWyniki[] = $aWiersz;
$iWynikiIlosc = $oDb->numRows();
?>
Zawartość tablicy $aWyniki i zmiennej $iWynikiIlosc po wykonaniu powyższego kodu:
$aWyniki = Array
(
[0] => Array
(
[id_test] => 2
[liczba] => 2
[tekst] => dwa
)
[1] => Array
(
[id_test] => 4
[liczba] => 21
[tekst] => test
)
)
$iWynikiIlosc = 2
Update
Aby uzyskać ilość rekordów zmodyfikowanych przez zapytanie UPDATE, lub usuniętych przez zapytanie DELETE, należy skorzystać z metody affectedRows()
<?php
$sQuery = 'update `test` ';
$sQuery.= 'set liczba = liczba * 2 ';
$sQuery.= 'where id_test % 2 = 0';
$oDb->query($sQuery);
$iUpdateIlosc = $oDb->affectedRows();
?>
Statystyki
W każdej chwili można uzyskać statystyki i ilości wykonanych dotychczas zapytań, oraz o łącznym czasie ich wykonania za pomoca metody GIVEStatistics().
<?php
$sStats = sprintf(
'Zapytań: %s; łączny czas wykonania: %.3f',
$oDb->GIVEStatistics(1), $oDb->GIVEStatistics(2)
);
?>
Rezultat: Zapytań: 6; łączny czas wykonania: 0.164
Szczegółowe statystyki
Jeżeli po utworzeniu obiektu zostanie włączone szczegółowe rejestrowanie zapytań za pomocą metody SETRegisterQueries(), można uzyskać informacje na temat czasu wykonania każdego kolejnego zapytania.
<?php
$sQueryStats = '';
while ($aStat = $oDb->GIVEQueryStatistics())
$sQueryStats.= sprintf(
'<div><strong>%.3f</strong> - %s</div>',
$aStat['time'], $aStat['query']
);
?>
Rezultat:
Można także skorzystać z metody wyswietlStatystyki() generującej gotowy kod HTML:
<?php
$oDb->wyswietlStatystyki();
?>
Tryb LateConnect
Typowy sposób korzystania z bazy, to połączenie na początku skryptu, a następnie pobieranie danych uzależnione od wielu różnych czynników, które niekoniecznie muszą być znane na etapie łączenia z bazą. Rezultat końcowy może być taki, że obiekt połączony z bazą nie wykona żadnego zapytania (strona nie zawierająca żadnych danych, lub wygenerowana w całości z cache), więc połączenie nie było potrzebne.
Aktywacja trybu LateConnect metodą setLateConnect() pozwala uniknąć w takiej sytuacji łączenia się z bazą. Domyślne zachowanie metod connect() i selectDb() jest wyłączane i dane do połączenia są jedynie zapisywane w obiekcie. Faktyczne połączenie z bazą następuje dopiero w momencie próby wykonania zapytania do bazy.