Differences
This shows you the differences between two versions of the page.
|
cor4:app:objects:cdatabase [2006/03/08 21:00] ivivan |
cor4:app:objects:cdatabase [2021/01/05 11:39] (current) |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| Ez az osztály az adatbázisokhoz való kapcsolódást teszi lehetővé. | Ez az osztály az adatbázisokhoz való kapcsolódást teszi lehetővé. | ||
| + | |||
| ===== konstruktor ===== | ===== konstruktor ===== | ||
| Line 16: | Line 17: | ||
| Az alapértelmezett szerveren kapcsolódik a megadott adatbázishoz. | Az alapértelmezett szerveren kapcsolódik a megadott adatbázishoz. | ||
| - | ''CDatabase(string type, string user, string password [, string host [, string database [, int port]]])'' | + | ''CDatabase(string type, string user, string password [, string host [, string database [, int port [, string schema]]]])'' |
| Általános adatbáziskapcsolat nyitása. | Általános adatbáziskapcsolat nyitása. | ||
| Line 32: | Line 33: | ||
| * database: az adatbázis neve | * 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) | * 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 [[cor4:app:appconfig.inc.php]]-ban definiált konstansok lesznek felhasználva, ezek rendre: ''DB_TYPE'', ''DB_USER'', ''DB_PASS'', ''DB_HOST'', ''DB_DEFAULT'' és ''DB_PORT''. | + | A megfelelő elemek elhagyásakor az [[cor4:app: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 [[http://www.sqlite.org|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. | Az [[http://www.sqlite.org|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 ===== | ===== 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 ==== | ==== queryAsArray ==== | ||
| Line 48: | Line 62: | ||
| 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) | 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ű: | ||
| + | |||
| + | <code php> | ||
| + | // 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(); | ||
| + | </code> | ||
| Hiba esetén a visszatérési érték a hibaüzenet, illetve üres lekérdezés esetén az 'empty' szöveg. | Hiba esetén a visszatérési érték a hibaüzenet, illetve üres lekérdezés esetén az 'empty' szöveg. | ||
| Line 73: | Line 128: | ||
| 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. | 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. | ||
| - | ==== insert ==== | ||
| - | ''string insert(string table, array values)'' | ||
| - | A beszúrást segítő metódus, 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.) | ||
| - | Például a következő metódus hívás az ''INSERT INTO irszam(varos,irszam,aktiv) VALUES (5,'5555',true)'' SQL utasítást eredményezi: | + | ==== 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: | ||
| <code php> | <code php> | ||
| Line 87: | Line 145: | ||
| )); | )); | ||
| </code> | </code> | ||
| + | |||
| + | |||
| + | ==== 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: | ||
| + | |||
| + | <code php> | ||
| + | $db->Update('irszam',array('varos'=>5, | ||
| + | 'irszam'=>'5555', | ||
| + | 'aktiv'=>true | ||
| + | ), | ||
| + | array('id'=>5)); | ||
| + | </code> | ||
| + | |||
| + | ==== 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. | ||
| + | |||
| + | <code php> | ||
| + | $db->getDelete('irszam', | ||
| + | array('irszam'=>5, | ||
| + | 'aktiv'=>true)); | ||
| + | </code> | ||
| + | |||
| + | ==== delete ==== | ||
| + | |||
| + | ''void delete(string table [, mixed where])'' | ||
| + | |||
| + | Egyenértékű a ''query(getDelete(table,where))'' hívással. | ||
| ==== disconnect ==== | ==== disconnect ==== | ||
| Line 99: | Line 218: | ||
| 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. | 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 ==== | ==== EndTransaction ==== | ||
| Line 106: | Line 226: | ||
| Lezárja a tranzakciót. Nem ad hibát, ha előtte nem volt nyitott tranzakció (ekkor nyilván nincs hatása). | Lezárja a tranzakciót. Nem ad hibát, ha előtte nem volt nyitott tranzakció (ekkor nyilván nincs hatása). | ||
| - | ==== rollback ==== | + | ==== Rollback ==== |
| ''void 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). | A nyitott tranzakciót semmissé teszi. Nem ad hibát, ha előtte nem volt nyitott tranzakció (ekkor nyilván nincs hatása). | ||