CDatabase
Ez az osztály az adatbázisokhoz való kapcsolódást teszi lehetővé.
konstruktor
Az objektum létrehozáskor azonnal kapcsolódik. A következő konstruktorai vannak:
CDatabase()
A appconfig.inc.php-ban definiált default kapcsolatot adja vissza. Amennyiben az ini fájlban engedélyezve van a permanens kapcsolat (alapértelmezetten engedélyezve van), akkor nem kapcsolódik újra, hanem ezt a permanens kapcsolatot adja vissza.
CDatabase(string database)
Az alapértelmezett szerveren kapcsolódik a megadott adatbázishoz.
CDatabase(string type, string user, string password [, string host [, string database [, int port [, string schema]]]])
Általános adatbáziskapcsolat nyitása.
A paraméterek jelentése:
- type: az adatbázis tipusa; lehet (a felsoroltak nem feltétlenül vannak belefordítva a programba):
- postgres
- mysql
- interbase
- sqlite
- user: a kapcsolódáshoz szükséges felhasználó név
- password: a kapcsolódáshoz szükséges jelszó
- host: az adatbázis szerver
- database: az adatbázis neve
- port: az adatbázis portja; ha 0-t adunk meg az adott adatbázis tipushoz használt alapértelmezett portot használja (ez az alapérték is)
- schema: PostgreSQL adatbázis esetén az alapértelmezett séma neve; a többi adatbáziskezelő figyelmen kívül hagyja
A megfelelő elemek elhagyásakor az appconfig.inc.php-ban definiált konstansok lesznek felhasználva, ezek rendre: DB_TYPE, DB_USER, DB_PASS, DB_HOST, DB_DEFAULT, DB_PORT és DB_SCHEMA.
Az SQLite adatbáziskezelő egyetlen fájlt használ és felhasználó azonosítás sincs benne, ezért ebben az esetben a database paraméterben (illetve a DB_DEFAULT konstansban) az adatbázis fájl nevét kell megadni, a többi paramétert figyelmen kívül hagyja.
Metódusok
isError
bool iserror()
Visszaadja, hogy történt-e hiba az utolsó hívás illetve az utolsó kapcsolódás óta. A hívás törli a hiba állapotát!
getErrorMessage
string geterrormessage()
Visszaadja az utolsó hibaüzenetet, illetve üres stringet, ha nem történt hiba. A hívás törli a hibaüzenetet!
queryAsArray
mixed queryAsArray(string query [, bool simple])
A query paraméterben megadott lekérdezést végrehajtja és a második paramétertől függő formában visszaadja.
Amennyiben a második paraméter false, akkor az eredmény tömbben az eredmény első oszlopával lesz indexelve a többi oszlop. (A lista ilyen formában várja az adatot)
Amennyiben a második paraméter true, akkor az eredménynek csak az első két oszlopa számít, ekkor az első oszloppal lesz indexelve a második oszlop. (A combobox ilyen formában várja az adatot)
Hiba esetén a visszatérési érték a hibaüzenet, illetve üres lekérdezés esetén az 'empty' szöveg.
queryAsAssocArray
mixed queryAsAssocArray(string query)
A query paraméterben megadott lekérdezést végrehajtja és asszociatív tömbben visszaadja.
A visszaadott érték egy kétdimenziós tömb, ahol az első index 0-tól a sorok száma, a belső tömb indexei pedig az oszlopok nevei.
Hiba esetén a visszatérési érték a hibaüzenet, illetve üres lekérdezés esetén az 'empty' szöveg.
queryAsAssocArrayWithID
mixed queryAsAssocArrayWithID(string query)
A query paraméterben megadott lekérdezést végrehajtja és asszociatív tömbben visszaadja.
A visszaadott érték egy kétdimenziós tömb, ahol az első index az eredmény első eleme, a belső tömb indexei pedig az oszlopok nevei. Íly módon ez a metódus a queryAsArray és a queryAsAssocArray metódusok kombinációja.
Hiba esetén a visszatérési érték a hibaüzenet, illetve üres lekérdezés esetén az 'empty' szöveg.
queryRow
mixed queryRow(string query)
A visszaadott érték a lekérdezés első sora asszociatívan indexelve. Ennek megfelelően a következő három kódrészlet egyenértékű:
// első verzió: queryAsAssocArray $temp = $db->queryAsAssocArray($query); $temp = $temp[0]; // második verzió: queryRow $temp = $db->queryRow($query); // harmadik verzió: fetchRow $db->query($query); $temp = $db->fetchRow();
Hiba esetén a visszatérési érték a hibaüzenet, illetve üres lekérdezés esetén az 'empty' szöveg.
query
string query(string query)
A paraméterben megadott lekérdezést végrehajtja. Ezután az eredményhez a fetchRow metódussal tudunk hozzáférni.
Hiba esetén a visszatérési érték a hibaüzenet, siker esetén üres string.
queryAsString
mixed queryAsString(string query)
A paraméterben megadott lekérdezést végrehajtja. A visszaadott érték a lekérdezés első sorának első oszlopa. Azaz amennyiben az eredmény egy sort adott és a lekérdezés egy oszlopra vonatkozott, akkor a visszatérési érték maga az eredmény.
Hiba esetén false értéket kapunk.
fetchRow
mixed fetchRow()
A query metódussal lekérdezett eredmény következő sorával tér vissza egy associatív tömbben, illetve a false értékkel, ha nincs már több sor. Az eredmény tömbben a mező nevével van indexelve az értéke.
getinsert
string getinsert(string table, array values)
A beszúrást segítő metódus, ami generál egy INSERT utasítást, ami a table paraméterben megadott táblába szúr be egy sort úgy, hogy a values minden egyes értéke “kulcs” = “érték” formában tárolásra kerül. Az értékek kezelése megfelelően történik (a PHP NULL értékből SQL null érték lesz, a PHP boolean tipusból SQL boolean stb.) Figyelni kell arra, hogy az utasítást nem zárja le ”;”-vel!
Például a következő metódus hívás az INSERT INTO irszam(varos,irszam,aktiv) VALUES (5,'5555','1') SQL utasítást eredményezi:
$db->Insert('irszam',array('varos'=>5, 'irszam'=>'5555', 'aktiv'=>true ));
getinsertwithid
array getinsertwithid(string table, array values [, string idfield=“id”])
A getinsert metódus módosítva úgy, hogy visszaadja a beszúrni kívánt mező azonosítóját, ezért a visszatérési érték egy tömb, amelynek két tagja van: az id tag tartalmazza a visszaadott azonosítót, a query tag pedig a visszaadott insert utasítást.
insert
string insert(string table, array values)
Egyenértékű a query(getinsert(table,values)) hívással, azaz az átadott paraméterek alapján legenerálja a megfelelő SQL utasítást, amit azonnal végre is hajt.
insertWithID
string insertwithid(string table, array values [,string idfield = “id”)
Hasonló az insert metódushoz, de a beszúrás előtt lekéri a következő id-t, ami az idfield mezőben megadott oszlophoz tartozik, és ennek megadásával végzi el a beszúrást, majd ezt az értéket adja vissza. A következő érték elkérése az aktuális adatbázis kezelőnek megfelelően működik: PostgreSQL és Firebird alatt sequensert illetve generátort használ, míg a többi adatbázis kezelőnél max(id)+1 módszert használ.
getupdate
string getupdate(string table, array values [,mixed where])
A módosítást segítő metódus, ami legenerál egy SQL utasítást, ami a table paraméterben megadott táblában módosít úgy, hogy a values minden egyes értéke “kulcs” = “érték” formában megadásra kerül. Az értékek kezelése megfelelően történik (a PHP NULL értékből SQL null érték lesz, a PHP boolean tipusból SQL boolean stb.) Amennyiben a where paraméter nem üres, akkor a megfelelő szűrő feltétel az utasítás végéhez lesz fűzve. Ha a where paraméter tömb, akkor a tömb elemei kulcs=ertek formában AND-el összefűzve fognak az utasítához adódni.
Például a következő metódus hívás az UPDATE irszam SET varos=5,irszam='5555',aktiv='1' WHERE id=5 SQL utasítást eredményezi:
$db->Update('irszam',array('varos'=>5, 'irszam'=>'5555', 'aktiv'=>true ), array('id'=>5));
update
string update(string table, array values [, mixed where])
Egyenértékű a query(getupdate(table,values,where)) hívással, azaz legenerálja a megfelelő UPDATE utasítást, amit azonnal végre is hajt.
getdelete
string getDelete(string table [, mixed where])
A megadott táblából a feltételeknek megfelelő sorokat törlő utasítást ad vissza. A where paramétert a getUpdate-hez hasonlóan értékeli ki. Például a következő kódrészlet a DELETE FROM irszam WHERE irszam=5 AND aktiv=true SQL utasítást fogja eredményezni.
$db->getDelete('irszam', array('irszam'=>5, 'aktiv'=>true));
delete
void delete(string table [, mixed where])
Egyenértékű a query(getDelete(table,where)) hívással.
disconnect
void disconnect()
Megszünteti a kapcsolatot a szerverrel. Ezután nem szabad végrehajtani lekérdezést.
StartTransaction
void StartTransaction()
Nyit egy új tranzakciót. A jelenleg támogatott adatbáziskezelők egyike sem tudja az egymásba ágyazott tranzakciókat kezelni, ezért tranzakción belül új tranzakció nyitása hatástalan. Egyben törli a hibaüzenet szövegét és a hiba állapotot is, így az isError és getErrorMessage függvény a hívás után false illetve üres string értékkel fog visszatérni.
EndTransaction
void EndTransaction()
Lezárja a tranzakciót. Nem ad hibát, ha előtte nem volt nyitott tranzakció (ekkor nyilván nincs hatása).
Rollback
void Rollback()
A nyitott tranzakciót semmissé teszi. Nem ad hibát, ha előtte nem volt nyitott tranzakció (ekkor nyilván nincs hatása).