TechNET: Developer · Mobilmánia · Wapko * EASY www.dobijanie.sk *
MAJACIK HLAVNY IMAGE STRANKY
30. Januára 2003, Štvrtok 
Lekcia 6 - PHP A DATABÁZY
 

V súčasnosti sme svedkami, že WEB a databázové informačné systémy sa stávajú jedným uceleným systémom, v ktorom WEB technológia v spojení s prehliadačmi slúži ako strana klientov a WWW server spolu s databázovým serverom ako zdroj dát a informácií prúdiacich do vnútra podnikov a firiem alebo na verejnosť.

Cieľom tohto tútora a špeciálne tejto kapitoly nie je vysvetľovať, čo je to databázový systém a SRBD. To sa môžete dozvedieť buď na prednáškach /napr. p. Matiaška /, prípadne z literatúry, ktorej je požehnane /odporúčam Pokorného, prípadne C.J. Date/. Pokúsim sa však načrtnúť, ako SRBD komunikuje zo svojim okolím.

Najčastejšie býva SRBD /Systém Riadenia Bázy Dát – motor databázového stroja – engine/spustený ako daemon /UNIX/ alebo služba-service /Windows NT/. Komunikuje prostredníctvom socketu (URL počítača + port + protokol) s klientami (ostatnými aplikáciami) a odpovedá na ich dopyty. Pre zadávanie dopytov sa používa jazyk SQL.. Skript v jazyku PHP môže byť tiež klientom, ktorý sprístupňuje obsah databázy na Web. Nakoľko však každý SQL server používa vlastný protokol pre komunikáciu s klientami, klient musí podporovať viac protokolov, čo je dosť nevýhodné. Preto vzniklo na platforme Windows rozhranie ODBC, ktoré umožnuje používať jednotné volania ODBC rozhrania, ktoré už potom zaistí predanie protokolom príslušného databázového serveru. V súčasnosti sa ODBC začína uplatňovať aj pod OS UNIX /iODBC, Openlink/. Výhodou ODBC je, že portovanie skriptu na iný databázový server je ľahké a rýchle, nakoľko nie je nutné zasahovať do kódu aplikácie. Nevýhodou starších ODBC driverov bol nižší výkon oproti tzv. natívnym ovládačom. Novšien SRBD však obsahujú ako jediný natívny ovládač práve ODBC driver, pre ktorý sú optimalizované. V súčasnosti PHP podporuje okrem rozhrania ODBC aj nasledujúce databázy prostrednítvom natívneho protokolu:

 

ü      MySQL
ü      mSQL
ü      ADABAS
ü      Informix
ü      Microsoft SQL Server
ü      Oracle
ü      Sybase
ü      PostgresSQL
ü      Solid
ü      Velocis
ü      DBASE
ü      dbm
ü      FilePro

 Pri komunikácii s databázovým serverom preto dochádza k nasledujúcej „reťazovej“ tranzakcii.

Prehliadač------->HTTP--------WWWserver-------->SAPI
---------PHP------------ODBC------NATIVE----->ENGINE
---databáza------ENGINE-------PHP-----SAPI--->
WWWserver--->HTTP--->Prehliadač

O dopytovacom jazyku SQL a inštalácii databázových systémov by bolo možné písať veľa, preto odporúčam obrátiť sa na príslušných autorov.

Neskôr sa pousilujem rozpracovať trošku túto kapitolu, aby nebolo nutné odvolávať sa na cudziu literatúru, u nás väčšinou nedostatkovú.

 6.1 PHP a databázy

Ako som už spomenul, PHP podporuje viac databázových systémov. Funkcie pre prácu s určitým SRBD začínajú jeho názvom. PHP preto obsahuje funckie začínajúce ODBC_ , ktoré slúžia pre spoluprácu s ODBC rozhraním, funkcie začínajúce na Pg_, ktoré slúžia na komunikáciu s SRBD Postgres alebo MySQL_, ktoré zas komunikujú s MySQL databázovým systémom, ktorý je asi najobľúbenejším, a s ktorým budeme aj my pracovať.

Práca s databázami  je v PHP veľmi jednoduchá. Najprv je nutné pripojiť sa k SQL serveru pomocou funkcie xxx_Connect(), kde za xxx dosadíme predponu príslušného SRBD (MySQL_Connect( ), Pg_Connect( )). SQL dotaz zadáme pomocou  funkcie xxx_Exec( ) alebo xxx_Query( ). Výsledok čítame prostredníctvom funkcií xxx_Fetch_Row() a xxx_Result().

6.2 PHP a MYSQL 

Pripojenie k databáze vyvoláme funkciou MySQL_Connect( ). Parametrom je meno počítača, na ktorom beží MySQL. V prípade, že pristupujeme k databáze, ktorá vyžaduje login heslo, zadáme ich ako ďalšie parametre Výsledkom funkcie je číslo spojenia, ktoré sa používa v nasledujúcich funkciách.

$spojenie = MySQL_Connect(“localhost”);

$spojenie =MySQL_Connect(“mgx”,”nobody”,”anonym”);

Príslušnú databázu, s ktorou chceme pracovať zvolíme pomocou  MySQL_Select_DB ( ); ISF znamená informačný systém fakulty.

MySQL_Select_DB(“isf“);

 Pre zadávanie SQL dopytov slúži funkcia MySQL_Query( ). Prvým parametrom je SQL výraz a druhý číslo spojenia. Tento parameter je nepovinný a môžeme ho vynechať. Výsledkom je číslo, ktoré slúži na prácu s výsledko SQL dopytu ako referenčné číslo.

 $vysledok = MySQL_Query(“SELECT * FROM OS_Udaje ORDER BY Priezv”);

Pomocou referenčného čísla je možné získať ďalšie informácie, napríklad počet n-tíc tuples v tejto projekcii. Na to slúži funkcia MySQL_Num_Rows (), ktorej parameter tvorí referenčné číslo.

echo “ V tabulke je “.MySQL_Num_Rows($vysledok).” zaznamov<BR>”;  

Výpis jednotlivých entíc zabezpečuje funkcia MySQL_Fetch_Array(), ktorej paramerom je referenčné číslo. Funkcia vráti obsah entice a presunie sa na ďalšiu. Ak už niet čo vypísať, vráti false. Obsah všetkých n-tíc zabezpečíme cyklom:

 While ($ntica=MySQL_Fetch_Array($vysledok))
     echo $ntica[“RC”].” “.$ntica[“Meno”].” “.$ntica[“Priezv”].”<BR>”;

Spojenie ukončíme pomocou funkcie MySQL_Close( ), kde parametrom je číslo spojenia.

Vlastné ošetrenie chýb zabezpečíme pomocou znaku „@” pred názvom funkcie., čím potlačíme výpis chybových hlásení, ktoré zabezpečuje PHP.

V nasledujúcich príkladoch budeme vytvárať informačný systém fakulty, ktorý bude obsahovať informácie o študentoch, učiteľoch a predmetoch. Podrobne

6.3 PHP a ODBC 

Pripojenie k databázovému serveru zabezpečí funkcia ODBC_Connect( ). Jej parametre tvorí názov databázy, login a heslo. Funkcia vracia číslo spojenia.

$spojenie=ODBC_Connect(“isf”,”nobody”,”anonym”);

SQL dopyt vykon8va funkcia ODBC_Exec( ), parametre tvroí číslo spojenia a samotný SQL príkaz v úvodzovkách. Funkcia vracia referenčné číslo, pomocou ktorého funckia ODBC_Fetch_Row( ) sprístupňuje n-tice. Ak už niet čo sprístupňiť, vráti false. Jednotlivé položky aktuálneho záznamu čítame prostredníctvom funkcie ODBC_Result( ). Jej parametre tvorí názov položky a číslo referencie, ktore vracia funkcia ODBC_EXEC().

while (ODBC_Fetch_Row($vysledok))
echo ODBC_Result($vysledok,”RC”).” “.ODBC_Result($vysledok,
     “Meno”).” “.ODBC_Result($vysledok,”Priezv”).” <BR>”;    

Databázu uzavrieme pomocou ODBC_Close() .








N Á V R A T

Copyright 2003 MGX


 
Dnes má meniny
Ema
nic.sk - domeny + hosting
PHP Club

Klub
 Registrácia
 Informácie
Special
 XML I diel
 
XML II diel
 
XML III diel
 
XML IV diel
 
XML V diel
 
XML VI diel
 
XML VII diel
 
XML VIII diel
 
XML IX diel
 
Anketa č. 21
Považujem sa za...
(Odpovedalo už 1579 ľudí)

PHP guru (157)
 10%
Perfektného programátora v PHP( 117)
 7%
Strednú triedu (373)
 24%
Začiatočníka (743)
 47%
Čo je PHP ? (189)
 12%

Klikni na zvolenú odpoveď!
Výsledky minulých ankiet.
 
Diskusia

PRÍSPEVKY
 Podľa tém
 Podľa dáta
 Podľa klikov
 Iba dnešné

UTILITY
 Registrácia
 Zmena hesla
 Zmena profilu

Dobré linky:
PC News
Developer
  (c) 2003 www.php.sk