Databáze v PHP chytře (MySQL a jiné)

Konec šíleným whilům a tunám nepřehledného zdrojového kódu při práci s databázemi. Představuje se špičkový, úsporný a KISS (keep it simple, stupid) databázový layer pod názvem dibi.

Za projektem stojí David Grudl, což je v české kotlině v luzích a hájích programování jméno jako vrata od stodoly. Jaké zásadní výhody má pro práci s databází používání tohoto databázového layeru:

  • nezávislost na databázové platformě – používáte MySQL, MS SQL nebo např. PostgreSQL? Nevadí, databázový layer dibi umí pracovat se všemi hlavními databázovými systémy. Stačí nastavit v konfiguračním souboru a jede se: vy píšete jednotně, dibi si upraví zápis tak, aby byl kompatibilní s konkrétním databázovým systémem.
  • absolutní úspora a ergonomie zápisu – což je obzvlášť v PHP husarský kousek. Např. při získávání jednoho řádku z databáze, což je docela častá záležitost, vypadá klasický tunový zápis v PHP nějak takto (neřešme, jestli mysql, nebo mysqli, co je to za tabulku, spojení s DB apod.):
$query = "SELECT jmeno, prijmeni FROM osoby WHERE id_osoby = '1'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
    $jmeno = $row['jmeno'];
    $prijmeni = $row['prijmeni '];
}
mysql_free_result($result)

A teď to kouzlo v dibi:

$row = dibi::fetch("SELECT jmeno, prijmeni FROM osoby WHERE id_osoby = '1'");

Výsledek je uložen do asociativního pole $row, takže k němu máme rychlý přístup, např. $row['jmeno'] nám vyhodí jméno osoby. Jediný řádek místo 8 (a to jsme vyhodili podmínku s kontrolou, jestli se příkaz vůbec správně vykonal a jestli je vrácen nějaký záznam). Není to geniální?

  • uzpůsobení na mnoho případů – podobně jako výše lze získat např. jen jediné políčko z tabulky, nebo celou tabulku, případně předem určené dvojice hodnot, což je obzvlášť praktické. Pomocí polí lze také databázové záznamy rychle vkládat nebo updatovat, např.:
$arr = array(
    'jmeno' => 'John',
    'prijmeni' => 'Doe',
    'is_admin'  => TRUE,
);

dibi::query('INSERT INTO [table]', $arr);

// INSERT INTO `table` (`jmeno`, `prijmeni`, `is_admin`) VALUES ('John', 'Doe', 1)

Dibi toho ale umí daleko více – lze např. určit typ proměnné, která se bude zapisovat (integer, string apod.), použít podmíněné SQL příkazy, složitější výrazy… (nebudu suplovat dokumentaci). Hlavními výhodami ale zůstává přenositelnost mezi databázovými systémy, ergonomie zápisu, eliminace chyb a především – KISS (keep it simple, stupid).

Vyvěšeno v PHP prakticky a oštítkováno , , , . Přidat si do záložek permalink. Přidat komentář nebo zanechat trackback: trackback URL.

Přidat komentář

Váš email nebude nikdy zveřejněn. Povinná pole jsou označena *

*
*

Můžete použít HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>