Rekord törlése MySQL adatbázis táblából PHP nyelvben (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)

Ebben a PHP leckében a rekord törlését mutatjuk be MySQL adatbázis táblájából PHP nyelven. Mindezt megvalósítjuk objektumorientáltan, procedurálisan és PDO segítségével is.

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

Rekord törlése MySQL adatbázis táblából PHP nyelvben (MySQLi objektumorientált, PDO és MySQLi procedurális módszerrel)

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

Ebben a cikkben már nem ismertetjük az adatbázis és a MySQL fogalmát, ha ezekről is szeretnél többet tudni, akkor olvasd el a korábbi PHP-MySQL leckénket.

Az előző leckében módosítottunk egy már létező rekordot a táblánkban, ebben pedig bemutatjuk, hogy hogyan tudtok már létező rekordokat törölni a táblából.

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 a MySQLi?

A MySQLi a PHP5-tel megjelenő modul, amely felületet biztosít az adatbázisszerverekkel végzett műveletek végrehajtásának. Lehetővé teszi a procedurális és az objektumorientált megvalósítást is. Ezt a modul a PHP telepítésekor általában automatikusan települ a számítógépekre. (Ha valakinek mégsem történt volna meg, akkor itt letöltheti és telepítheti.)


A MySQLi bővítmény előnyei:

  • támogatja az objektumorientált megvalósítást
  • támogatja a procedurális interfészt
  • támogatja az előkészített utasításokat
  • támogatja a nyomkövetést
  • támogatja a hibakeresést

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.

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 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, metódusoknak nevezzük. Az objektum az objektumorientált programozás alapeleme.

Rekord törlése MySQL adatbázis táblájából (DELETE)

Vannak olyan esetek, amikor nem elég egy rekordot módosítanunk, hanem teljesen törölnünk kell, szerencsére az ilyen esetekre is van megoldás mind a MySQL-ben és mind a PHP-ban.

Az SQL rekordtörlés szintaxisa

DELETE FROM táblanév
WHERE feltétel
Code language: SQL (Structured Query Language) (sql)

A „DELETE FROM” után meg kell adnunk azt a táblanevet, amelyből törölni szeretnénk, majd a „WHERE” után meg kell határoznunk egy feltételt, hogy milyen adatokat szeretnénk törölni.

Nagyon ügyelnünk kell arra, hogy tökéletes feltételt határozzunk meg, hogy csak olyan rekordok törlődjenek, amelyeket valóban törölni szeretnénk!

Rekord (sor) törlése MySQL táblában objektumorientált módon (MySQL DELETE)

Legelőször nézzük meg a fentebb említett objektumorientált megvalósítást.

Szintaktika

KAPCSOLAT->query(SQL.KÓD);
Code language: CSS (css)

Objektumorientált programozás esetében bármilyen SQL utasítás (új rekord felvitele, törlése, módosítása) végrehajtása során a használni kívánt kapcsolatunkra (alábbi példánkban „$conn”) kell meghívni a „query()” függvényt, melynek az SQL utasítás az egyetlen paramétere. Az SQL utasításokat érdemes egy változóba kiszervezni és azt átadni paraméterként.

Példa rekord törlésére MySQL adatbázisból 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, $dbname); // 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 a kapcsolódás
  }

  // rekordtörlő SQL kód
  $sql = "DELETE FROM programnyelvek WHERE nev='Python'";

  // rekord törlésének ellenőrzése
  if ($conn->query($sql) === false) {
    echo "A rekord törlése nem sikerült: " . $conn->error;
  } else {
    echo "Sikeres rekordtörlés.";
  }

  // kapcsolat lezárása
  $conn->close();
?>
Code language: PHP (php)


Az SQL utasítás magyarázata: Töröljük („DELETE”) a „programnyelvek” táblából („FROM”) azokat a rekordokat, ahol („WHERE”) „nev” mező megegyezik a „Python” szóval.

Az SQL kód megírása után szimplán lefuttatjuk az SQL kódot a „$conn->query($sql)” segítségével.

Rekord törlése procedurálisan (MySQL delete)

Az objektumorientált verzió után nézzük meg a rekord törlésére vonatkozó procedurális utasításokat.

Szintaxis

mysqli_query(KAPCSOLAT, SQL.UTASÍTÁS);
Code language: CSS (css)

Emlékezzünk rá, hogy bármilyen SQL utasítást (új rekord felvitele, törlése, módosítása) szeretnénk végrehajtani procedurálisan, mindig a „mysqli_query” függvénnyel tehetjük meg, melynek az első paramétere a kapcsolat, míg a második a végrehajtandó SQL kód.

Rekord törlése adatbázisból procedurális megvalósítással PHP nyelvben

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
  }

  // rekordtörlő SQL kód
  $sql = "DELETE FROM programnyelvek WHERE nev='Python'";
  
  if (mysqli_query($conn, $sql)) { // SQL kód futtatása és sikerességének ellenőrzése
    echo "Rekord törlése sikeres.";
  } else {
  echo "A rekord törlése során hiba lépett fel: " . mysqli_error($conn);
  }

  mysqli_close($conn); // kapcsolat lezárása
?>
Code language: PHP (php)

Az SQL utasítás magyarázata: Töröljük („DELETE”) a „programnyelvek” táblából („FROM”) azokat a rekordokat, ahol („WHERE”) „nev” mező megegyezik a „Python” szóval.

Ha megvan az SQL kód, akkor szimplán futtatjuk a „mysqli_query($conn, $sql)” utasítással.

Rekord törlése MySQL adatbázis táblájából PDO-val (MySQL delete)

Először megnéztük objektumorientáltan, majd procedurálisan a rekord törlésének megvalósítását, most itt az ideje, hogy szemügyre vegyük a PDO-s megoldást.

Rekordtörlő szintaxis PDO esetében

KAPCSOLAT->exec(SQL.KÓD);
Code language: CSS (css)

Jegyezzük meg, hogy bármilyen SQL utasítást (új rekord felvitele, törlése, frissítése) szeretnénk végrehajtani PDO-s kapcsolat során, mindig az „exec” függvényt kell meghívnunk a kapcsolatra vonatkozóan, melynek egy paramétere van, az SQL utasítás.

Sor, rekord törlése PDO-s megvalósítással PHP környezetben

PHP kód

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

  // megpróbáljuk végrehajtani az adatbázisműveleteket, 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

  // rekordtörlő SQL kód
  $sql = "DELETE FROM programnyelvek WHERE nev='Python'";

  $conn->exec($sql); // itt hajtjuk végre az SQL utasítást, amely törli a rekordot

  echo "Sikeres művelet.";
  } catch (PDOException $e) {
    echo "Sikertelen művelet.: " . $e->getMessage();
  }

  $conn = null; // kapcsolat lezárása
?>
Code language: PHP (php)

Az SQL kód magyarázata: Töröljük („DELETE”) a „programnyelvek” táblából („FROM”) azokat a rekordokat, ahol („WHERE”) „nev” mező megegyezik a „Python” szóval.

Végül egyszerűen futtatjuk az SQL utasítást a „$conn->exec($sql)” utasítással.

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