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_HOSTDB_USERDB_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:
0.001 - select now()
0.064 - create temporary table `test` (id_test int unsigned not null auto_increment primary key, liczba int not null default 0, tekst varchar(255) not null)type=innodb
0.033 - insert into `test` (`liczba`, `tekst`) values (1, "jeden"), (2, "dwa"), (3, "trzy")
0.033 - insert into `test` (`liczba`, `tekst`) values (21, "test")
0.001 - select id_test, liczba, tekst from `test` where id_test % 2 = 0
0.032 - update `test` set liczba = liczba * 2 where id_test % 2 = 0

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.