Abstraktní DB vrstva v PHP (Was: Re: C, python, perl, ...?)

Jirka Kosek jirka na kosek.cz
Pondělí Říjen 15 12:02:40 CEST 2001


"Ing. Pavel PaJaSoft Janousek" wrote:
> 
> > PHP má rozhraní DB z PEAR - je to obdoba perlového DBI.
> 
>         PHP neni moje parketa, problemy resi (maji:->) spise mi kolegove, rad
> bych se vsak zeptal i ja, at netvrdim ptakoviny a rozsirim si obzory,
> zda-li je toto rozhranni upravdu obdobou DBI z Perlu? Pamatuji si zive,
> jak kazdy datastor ma svou sadu (navzajem samozrejme nekompatibilnich)
> funkci a tedy nezavislost na DB stroji byla zhola nemozna.

PHP má nativní funkce pro přístup do mnoha databází, ty jsou specifické
pro každou databázi. PEAR obsahuje obecnou knihovnu, která z pohledu
programátora pracuje se všemi databázemi stejně. Při připojování k
databázi se pomocí pseudo-URL určí použitý db-server, adresa počítače,
databáze, jméno, heslo apod. Knihovna pak vnitřně použije příslušné na
databázi závislé funkce. Programátor je od toho odstíněn. Když budete
chtít následující skript použít s Oraclem místo s MySQL, stačí když na
jednom místě z mysql: uděláte oci:.

<?php

// načtení abstraktní DB knihovny
require_once "DB.php";

// připojení k databázi
$db = DB::connect("mysql://localhost/test");
if (DB::isError($db))
  die($db->getMessage());

// položky záznamu se budou ukládat do asociativního pole 
$db->setFetchMode(DB_FETCHMODE_ASSOC);

// zaslání SQL dotazu
$vysl = $db->query("SELECT * FROM vina ORDER BY odruda, rocnik");
if (DB::isError($vysl))
  die($vysl->getMessage());

// zpracování výsledku
while ($z = $vysl->fetchRow())
{
	echo $z["odruda"], " ", $z["barva"], "<br>\n";
	flush();
}

// uvolnění výsledku z paměti
$vysl->free();	

?> 

Knihovna umí i prepare a execute, kdy se automaticky postará o nahrazení
nebezpečných znaků v textových řetězcích v závislosti na databázi a
jejím SQL dialektu. 

Více informací o PEAR naleznete na adrese http://pear.php.net

-----------------------------------------------------------------
  Jirka Kosek  	                     
  e-mail: jirka na kosek.cz
  http://www.kosek.cz


Další informace o konferenci Linux