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("<h1align='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=" ";
}
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.