Jednotné databázové rozhraní v PHPLIB

Jelikož jsou téměř všechny funkce PHPLIB závislé na databázi, obsahuje knihovna jednotné databázové rozhraní pro přístup k různým databázovým serverům. Rozhraní můžeme používat buď společně s celou knihovnou PHPLIB, nebo zcela samostatně. Databázové funkce jsou soustředěny v souborech začínajících na db_.

Pokud nepoužíváme PHPLIB, můžeme na začátku skriptu použít příkaz require "db_mysql.inc" a využívat rozhraní pro přístup k MySQL. Pokud místo toho použijeme například require "db_odbc.inc", bude vše rovnou fungovat s libovolnou ODBC databází.

V souboru je definována třída DB_Sql. Pro využití knihovny stačí vytvořit potomka této třídy a pomocí několika členských proměnných nastavit správné parametry. Musíme správně nastavit hodnoty následujících čtyř proměnných:

Host
Jméno počítače, na kterém databázový server běží.
Database
Jméno databáze, ke které se chceme připojit.
User
Uživatelské jméno, pod kterým se chceme k databázi připojit.
Password
Heslo uživatele, který se k databázi připojuje.

Definice vlastní třídy může vypadat třeba takto:

class DB_IShop extends DB_Sql {
  var $Host     = "localhost"; 
  var $Database = "ishop";     
  var $User     = "phplib";  
  var $Password = "octopus"; 
}

Pro vlastní práci s databází si pak musíme vytvořit instanci naší třídy. Pokud pak s databází hodně cvičíme, je výhodné ji pojmenovat co nejkratším názvem.

$q = new DB_IShop;

K dispozici nyní máme několik metod, které nám umožní provádění SQL dotazů a čtení jejich výsledků.

K provedení SQL dotazu slouží metoda query():

$q->query("select * from vyrobky");

Metoda next_record() čte další záznam výsledku a vrací true, dokud má co číst. Pro získání obsahu jednotlivých položek záznamu slouží metoda f(). Výpis výsledku dotazu může vypadat třeba takto:

while ($q->next_record()):
   echo $q->f("nazev"), " ", $q->f("cena"), "<br>\n";
endwhile;

Třída DB_Sql nabízí mnoho dalších užitečných metod. Za všechny jmenujme například num_rows(), která vrací počet záznamů ve výsledku, nebo affected_rows(), která vrací počet záznamů ovlivněných SQL příkazem INSERT, UPDATE nebo DELETE. Podrobný výčet všech metod a jejich popis naleznete v originální dokumentaci.

© Jiří Kosek 1999
$Id$