• Nem Talált Eredményt

MySQL API használata

11. Lecke: MySQL DBMS és adatbázis alkalmazások

11.5 PHP MySQL API

11.5.1 MySQL API használata

A MySQL API számos függvényt tartalmaz, amelyekkel az adatbázisok keze-léséhez kapcsolódó, különböző funkciók valósíthatók meg.

A függvények visszatérési értéke általában az elvégzett művelet eredmé-nye, illetve lebonyolítás sikeres voltáról tájékoztató logikai érték. A függvények által visszaadott eredményt vizsgálatával eldönthető, hogy sikeres volt-e a hí-vás. Ha igen az eredményt föl kell dolgozni, ha nem, akkor valamilyen módon kezelni kell a hibát.

A hibakezelés a PHP-programozás önálló fejezete, ezért az itt bemu-tatott példákban a legegyszerűbb módszert, a program hibaüzenet mellett történő leállítását használjuk.

Az egyszerű kapcsolódás, az adatok lekérdezése és megjelenítése az alábbi lépésekben valósítható meg:

 Kapcsolat fölépítése a program és a MySQL-adatbázis között.

 Adatbázis kiválasztása.

 Lekérdezés elküldése.

 Lekérdezés eredményhalmazának feldolgozása.

 Kapcsolat lezárása.

 Weblap megjelenítése.

A kapcsolat fölépítését a mysql_connect() függvénnyel végezhetjük el. A függvény három fontos paramétert, az adatbázis-szerver címét, a felhasz-náló nevét, és jelszavát várja. Visszatérési értéke sikeres kapcsolódás esetén az úgynevezett kapcsolatazonosító, amellyel a továbbiakban, a lezárásáig hivat-kozhatunk a kapcsolatra. Ha a kapcsolat sikertelen a visszatérési érték false (logikai hamis). A kapcsolat lezárásához a paraméter nélküli mysql_close() függvényt használjuk

MySQL DBMS és adatbázis alkalmazások kommunikációja 183

$database="webbolt";

$sql="SELECT * FROM termek t NATURAL JOIN kategoria k

ORDER BY k.kNev, t.tMegnevezes;";

//Kapcsolat fölépítése

$connid = mysql_connect($host, $user, $passwd) or die("A szerver nem elérhető");

//Ide kerül a további kód echo("A kapcsolat létrejött");

mysql_close();

?>

A kapcsolat fölépítése, a kapcsolatazonosító lekérdezése az alábbi sorral történik:

$connid = mysql_connect($host, $user, $passwd) or die("A szerver nem elérhető");

Sikeres kapcsolódás esetén az azonosító a $connid változóba kerül. A példában a hibakezelés egyszerű, de egyben primitív módszerérét használjuk. A függvényhívás után, de vele egy programsorban található or die("A szerver nem elérhető") parancs akkor lép működésbe, ha a függvény false (hamis) eredményt ad vissza. A die() megszakítja a programot, és a zárójelben lévő szöveget küldi a kimenetre.

A MySQL adatbázisból lekérdezett adatok megjelenítésekor fontos, hogy a DBMS, a weblapon használt karakterkódolásnak megfelelően küldje el a lekérdezett mezőértékeket. Ezt a mysql_set_charset(kódolás); függvény hívásával érhetjük el.

Jelen esetben utf-8 kódolást használunk:

mysql_set_charset("utf8");

A sikeres kapcsolat esetén a mysql_select_db() függvénnyel választ-ható ki a szükséges adatbázis. A függvény paramétere az adatbázis neve, vissza-térési értéke siker esetén true, ellenkező esetben false.

184 MySQL DBMS és adatbázis alkalmazások kommunikációja

$ret=mysql_select_db($database) or die("Az adatbázis nem található");

Ha az adatbázis kiválasztása is sikeres volt, a mysql_query() függvény-nyel küldhetjük el a DBMS-nek a paraméterként megadott SQL-mondatot. Sike-res lekérdezés esetén az eredményhalmazt, hiba esetén false értéket ka-punk eredményként.

$res=mysql_query($sql)or die("A lekérdezés nem futtatható");

Az eredményhalmazt többféle módszerrel is feldolgozhatjuk a PHP adattí-pusai és vezérlési szerkezetei segítségével. Az egyik lehetőség a mysql_fetch_assoc() függvény használata. A függvény paramétere az eredményhalmazt tartalmazó változó, eredménye pedig következő rekordjából létrehozott asszociatív tömb. A tömbelemek értékei a mezőértékek, nevei a mezőnevek.

A függvény többször is meghívható, és mindig a következő rekorddal tér vissza. Az utolsó rekord utáni hívás false eredményt ad.

//Eredményhalmaz feldolgozása

while($row=mysql_fetch_assoc($res)){

echo($row['tMegnevezes']."....Ár:".$row['tEladAr']."<b r>");

}

Rövidke példaprogramunk teljes kódja a következő:

<?php

$host = "localhost";

$user = "webbolt";

$passwd = "netuddmeg";

MySQL DBMS és adatbázis alkalmazások kommunikációja 185

$database="webbolt";

$sql="SELECT * FROM termek t NATURAL JOIN kat-egoria k

ORDER BY k.kNev, t.tMegnevezes;";

//Kapcsolat fölépítése

$connid = mysql_connect($host, $user, $passwd) or die("A szerver nem elérhető");

mysql_set_charset("utf8");

//Adatbázis kiválasztása

$ret=mysql_select_db($database) or die("Az adatbázis nem található");

//További kód...

$res=mysql_query($sql)or die("A lekérdezés nem futtatható");

//Eredményhalmaz feldolgozása

echo("<h1

align='center'>Árlista</h1><br><br>");

echo("<table align='center' border='1'>");

186 MySQL DBMS és adatbázis alkalmazások kommunikációja

echo("<th>Kategória</th><th>Termék</th><th>Ár</th>

");

while($row=mysql_fetch_assoc($res)){

echo("<tr>");

$prod=$row['tMegnevezes'];

$categ=$row['kNev'];

$cost=$row['tEladAr'];

if($lastcateg!=$categ){

$lastcateg=$categ;

} else {

$categ="&nbsp";

}

echo("<td>{$categ}</td><td>{$prod}</td><td align='right'>{$cost}</td>");

echo("</tr>");

}

MySQL DBMS és adatbázis alkalmazások kommunikációja 187

echo("</table>");

//Kapcsolat lezárása

mysql_close();

?>

11.6 ÖSSZEFOGLALÁS, KÉRDÉSEK 11.6.1 Összefoglalás

Utolsó leckénkben a MySQL-adatbázisok külső alkalmazásokkal történő összekapcsolásáról tanultunk. Megismertük a mysql protokoll, mysql C library, a natív driver, a connector és API fogalmakat. Megtanultuk, hogy konfigurálható a MySQL ODBC Connectora, amely ODBC kompatibilis alkalmazások számára teszi lehetővé a MySQL adatbázisok elérését. A lecke példáján keresztül láttuk, hogyan csatolhatók a MySQL-táblák, tetszőleges MS Access adatbázisokba, hogyan válhat az Access, a MySQL grafikus kliensévé, és hogyan tehetjük MySQL-alkalmazássá az Access segítségével készített adatbázis-kezelő felületet.

Leckénk utolsó felében, rövid példában ismeretük meg a PHP MySQL API-jának használatát.

11.6.2 Önellenőrző kérdések

1. Mit az a mysql protolokoll?

 A MySQL-protokoll a MySQL szerverek és kliens oldali alkalmazások kommunikációjának protokollja, ami a TCP/IP-architektúra legfelső, alkalmazási rétegébe tartozik.

2. Mik azok a MySQL API-k?

 A MySQL API-k az egyes programozási nyelvek eljárá-sok, függvények, illetve osztályok és metódusok formá-jában létrehozott kibővítései. Segítségükkel MySQL adatbázis alkalmazások hozhatók létre az adott prog-ramozási nyelv eszközeivel.

188 MySQL DBMS és adatbázis alkalmazások kommunikációja

3. Hogyan kezelheti a MySQL adatbázisokat az MS Access felületén?

 A MySQL adatbázisok és az Access kapcsolatát a MySQL ODBC Connector segítségével valósíthatjuk meg. A megfelelő adatforrás létrehozása után az Ac-cess-adatbázisaiba csatolhatjuk, vagy importálhatjuk a MySQL-adatbázis tábláit és nézeteit.

4. Mi a különbség táblák csatolása és importálása között?

 Importálás után az adatok az Access adatbázis részévé válnak. Az Access-ben elvégzett adatváltoztatások nem kerülnek többé vissza a MySQL-adatbázisba.

Csatoláskor azonban az Access felületén kezelhető táblák, és nézetek változatlanul a MySQL-szerveren tárolódnak. Az Accessben elvégzett változtatások a MySQL-adatbázis frissítését eredményezik.

$database="webbolt";

$sql="SELECT vNev FROM vevo v ORDER BY v.vNev;";

$connid = mysql_connect($host, $user,

$passwd) or die("A szerver nem elérhető\n");

$ret= mysql_select_db($database) or die("A(z) {$database} adatbázis nem találha-tó\n");

$res= mysql_query($sql) or die("A {$sql}

lekérdezés nem futtatható\n");

while($row=mysql_fetch_assoc($res)){

 Névsorban listázza a webbolt adatbázis vevok táblá-jában tárolt vevők neveit.

12. ÖSSZEFOGLALÁS