Csatlakozás, kapcsolódás MySQL adatbázishoz PHP-ban (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)

Ebben a cikkben bemutatjuk, hogy hogyan kell MySQL adatbázishoz kapcsolódni, csatlakozni PHP-ban. Példákon keresztül bemutatjuk a MySQLi objektumorientált, a PDO és a MySQLi procedurális megvalósításokat.

MySQL adatbázis-műveletek a PHP-ban (adatbázis-kapcsolat létrehozása, bezárása, tábla létrehozása, rekord hozzáadása, törlése, módosítása, lekérdezések írása) című cikk borítóképe

Csatlakozás, kapcsolódás MySQL adatbázishoz PHP-ban (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)

Egy korábbi cikkben már foglalkoztunk a MySQL adatbázis-műveletekkel PHP nyelv alatt, de ebben a leckében sokkal részletesebben kifejtjük egyes adatbázis-műveletek megvalósítását. Az előző cikkben csak az objektumorientált módszert mutattuk be, de ebben a cikkben mutatunk példát a procedurális és PDO módszerre is.

Ebben a cikkben már nem taglaljuk az adatbázis és a MySQL fogalmát, ha ezekről is szeretnél tanulni, akkor olvasd el az előző leckénket.

Mi az a MySQLi?

A MySQLi a PHP5-ben bemutatkozott modul, mely felületet biztosít az adatbázisszerverekhez. Lehetővé teszi a procedurális és az objektumorientált megvalósítást is. Ezt a modul a legtöbb esetben automatikusan települ a számítógépre a PHP telepítésekor. (Ha valakinek mégsem települne, akkor itt letöltheti.)


A MySQLi bővítmény használata több előnnyel jár:

  • objektumorientáltság támogatása
  • procedurális interfész támogatása
  • előkészített utasítások támogatása
  • nyomkövetés támogatása
  • hibakeresés támogatása

Mi az a PDO?

A PDO a PHP Data Objects rövidítése. A PDO tulajdonképpen egy objektum az adatbázis kapcsolatok és lekérdezések egyszerűbb kezelésére. A PDO több különböző adatbázis rendszerrel képes működni, így az igazi előnye, akkor jön elő, amikor szeretnéd lecserélni az adatbázisszervered egy másikra. A PDO használatával csak apróbb módosításokat kell tennünk a kódban.


A PDO nyújtotta lehetőségek:

  • támogatja az objektumorientált megvalósítást
  • támogatja az előkészített utasításokat
  • védelmi funkciók

Mi az az objektumorientált programozás?

Az objektumorientált programozás (angolul object-oriented programming, röviden OOP) egy az objektumokra alapozott programozási elmélet vagy szemlélet. Az objektumok egységbe foglalják az adatokat és a velük kapcsolatos műveleteket. Az adatokat tulajdonságoknak, míg a műveleteket függvényeknek, illetve metódusoknak szoktuk nevezni. Az objektum az objektumorientált programozás egyik alapeleme.

Mi az a procedurális programozás?

A procedurális programozás (vagy eljárás orientált programozás) egy programozási alapelv, melynek alapja a modularitás és a hatókör. A procedurális programozás során azt az alapelvet követjük, hogy a konkrét programozási feladatot több kisebb egységre, avagy eljárásra bontsuk. Ezek az eljárások a kódban jól körülhatárolt egységek (függvény, metódus), melyeknek vannak elnevezéseik, jellemzőik és akár visszatérési értékeik is. A program futása során a főprogramban ezek az elkészített eljárások kerülnek meghívásra.

Kapcsolódás MySQL adatbázishoz objektumorientált módon (connect)

Legelőször kezdjük az objektumorientált módszerrel. Ha elkészítettük az adatbázist, akkor a PHP-ban mielőtt nekilátnánk lekérdezéseket írni vagy adatokat hozzáadni PHP-ból, előtte mindenképp csatlakoznunk kell az adatbázishoz. Az adatbázisunknak minden esetben lennie kell egy szervercímének, egy felhasználónevének és egy jelszavának.


Szintaxis:

new mysqli(SZERVERCÍM, FELHASZNÁLÓNÉV, JELSZÓ)
Code language: PHP (php)

A kapcsolódás valójában ebből az egyetlen egy sorból áll, de a lenti példából látni fogjátok, hogy érdemes még pár sorral kiegészíteni, hogy a kódunk átláthatóbb, könnyebben módosítható és minden igényt kielégítő legyen.


Példa MySQL adatbázis csatlakozáshoz, kapcsolódáshoz objektumorientáltan PHP nyelv alatt:

PHP kód

<?php
  // adatok felvétele a kapcsolathoz
  $servername = "localhost";
  $username = "felhasznalo";
  $password = "jelszo";
  $dbname = "adatbazis";

  $conn = new mysqli($servername, $username, $password); // kapcsolat létrehozása

  // kapcsolódás ellenőrzése
  if ($conn->connect_error) {
    die("Sikertelen kapcsolódás: " . $conn->connect_error); // sikertelen kapcsolódás
  } else {
    echo "Sikeres kapcsolódás."; // sikeres kapcsolódás
  }
?>
Code language: PHP (php)

A fenti példában láthatjuk, hogy a legelején felvesszük az adatbázis kapcsolódáshoz szükséges adatokat (szervercím, felhasználónév, jelszó, adatbázisnév) különböző változókba, melyeket egy sorral lentebb behelyettesítünk a “mysqli” kapcsolatlétesítési függvénybe. Mindezt elmentjük egy változóba, hogy pár sorral lejjebb letudjuk ellenőrizni, hogy a kapcsolódás sikeres volt-e vagy sem.

Érdemes megemlíteni, hogy az adatbázishoz való csatlakozásnak PHP-ban nincs szemmel látható eredménye.

Kapcsolódás MySQL adatbázishoz MySQLi procedurális programozással (connect)

A következő bemutatandó példa a MySQL adatbázishoz való csatlakozásról procedurális megvalósítással történik. Itt sem kell nagyon eltérő kódra számítani, valójában csak pár kulcsszót kell átírnunk.


Szintaktika:

mysqli_connect(SZERVERCÍM, FELHASZNÁLÓNÉV, JELSZÓ)
Code language: PHP (php)

Az előző példából a “new mysqli” kulcsszót lecseréljük a “mysqli_connect”-re és kész.

Példa MySQL adatbázishoz való csatlakozásról, kapcsolódásról procedurálisan PHP nyelv alatt:

PHP kód

<?php
  // adatok felvétele a kapcsolathoz
  $servername = "localhost";
  $username = "felhasznalo";
  $password = "jelszo";
  $dbname = "adatbazis";

  $conn = mysqli_connect($servername, $username, $password, $dbname); // kapcsolat létrehozása

  // kapcsolódás ellenőrzése
  if ($conn) {
    echo "Sikeres kapcsolódás."; // sikeres kapcsolódás
  } else {
    die("Sikertelen kapcsolódás: " . $mysqli_connect_error()); // sikertelen kapcsolódás
  }
?>
Code language: PHP (php)

Ebben a példában is először kiszerveztük az adatbázis fontosabb adatait különböző változókba, hogy a kódunk átláthatóbb legyen, illetve később egyszerűbb legyen módosítani. Majd a “$conn” változóba meghívjuk a “mysqli_connect” függvényt, melynek paraméterekként megadjuk a fent felvett változókat. Majd végezetül ellenőrizzük, hogy a kapcsolódás, csatlakozás sikeres volt-e. Itt a “$conn” változót vizsgáljuk, ha a változó igaz értékkel tér vissza, akkor egyszerűen visszajelezzük, hogy a csatlakozás sikeres volt. Ha hibával tér vissza, akkor kiírjuk, hogy sikertelen kapcsolódás, majd hozzáfűzzük a hibaüzenetet.

Kapcsolódás MySQL adatbázishoz PDO-val (connect)

Végül, de nem utolsósorban pedig nézzük meg, hogy hogyan hozhatunk létre adatbáziskapcsolatot PDO segítségével. Itt azért egy kicsit már másképp fog kinézni a művelet.


Szintaxis:

new PDO("mysql:host=SZERVERCÍM;dbname=ADATBÁZISNÉV", FELHASZNÁLÓNÉV, JELSZÓ)
Code language: PHP (php)

Ebben az esetben a szintaxis a fent látható kódsorra módosul. Elsőre kicsit durvának tűnhet, de haladjunk sorról sorra. Először megadjuk a “new PDO” kulcsszót, majd nyitunk egy zárójelet, ahova egy idézőjel után beírjuk, hogy “mysql:host=”, ez fogja definiálni, hogy mi egy MySQL kapcsolatot szeretnénk készíteni, a host azt jelöli, hogy e mögé jön a szerverünk címe. Majd írunk egy pontosvesszőt és ezt követi a “dbname” kulcsszó, ide kell beírnunk annak az adatbázisnak a nevét, amelyhez kapcsolódni szeretnénk. Itt kitesszük a záróidézőjelet, majd írunk egy vesszőt és szimplán megadjuk az adatbázisunkhoz tartozó felhasználónevet és jelszót.


Hibakezelés beállítása:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
Code language: CSS (css)

Lehetőségünk van arra is, hogy módosítsuk az alapértelmezett hibakezelési beállításokat. Az első paraméter a hibavisszajelzést kapcsolja be, amely a legtöbb esetben nélkülözhetetlen, míg a második paraméter pedig azt mondja meg a PDO-nak, hogy dobjon kivételt, amikor egy lekérdezés hibára fut.

PHP kód

<?php
  // adatok felvétele a kapcsolathoz
  $servername = "localhost";
  $username = "felhasznalo";
  $password = "jelszo";
  $dbname = "adatbazis"

  // megpróbálunk csatlakozni a "try"-ban, ha nem sikerül, akkor elkapjuk a hibát a "catch"-ben
  try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // PDO kapcsolat létrehozása
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // hibakezelés beállítása
    echo "Sikeres csatlakozás."; // sikeres csatlakozás visszajelzés
  } catch (PDOException $e) {
    echo "Sikertelen csatlakozás: " . $e->getMessage(); //visszajelzés sikertelen csatlakozásról
  }
?>
Code language: PHP (php)

A PDO-s megoldásnál is felvesszük a fontosabb adatbázis adatokat külön-külön változókba. Itt viszont belép egy újdonság a képbe, ez pedig nem más, mint a try-catch szerkezet. A try-catch úgy működik, hogy megpróbálunk valamit végrehajtani (try), majd megpróbáljuk a lehetséges hibákat elkapni (catch). Ezt egyébként kivételkezelésnek nevezzük. Szóval megpróbálunk csatlakozni az adatbázishoz a fent említett PDO kapcsolódási utasítással, majd beállítjuk a hibakezelés/kivételkezelés végrehajtását, majd kiíratjuk, hogy sikerrel jártunk. Ha mindezek alatt valami hibába futottunk volna, akkor átugrottunk volna a “catch” részhez, ahol kiíratjuk, hogy mi a hiba oka.

Ha hasznos volt számodra, akkor kérlek oszd meg másokkal is, hogy ezzel támogass minket!