PHP és MySQL Összekötése (PDO)

Biztonságos adatbázis kapcsolat építése PHP és MySQL között PDO segítségével

Most, hogy ismerjük a PHP-t (a szakácsot) és a MySQL-t (a kamrát), ideje hidat építeni a kettő közé. A PHP-nak be kell tudnia menni a kamrába, hogy kihozza az alapanyagokat (adatokat), amikből felépíti a weboldalt.

A modern szabvány: A PDO

Régebben a fejlesztők a mysql_connect() vagy a mysqli parancsokat használták. Ezek ma már elavultak, és biztonsági kockázatot jelentenek. A modern, objektumorientált és biztonságos megoldás a PDO (PHP Data Objects).

1. Lépés: A Csatlakozás (A Try-Catch blokk)

Az adatbázishoz való csatlakozás veszélyes művelet. Lehet, hogy rossz a jelszó, vagy leállt a szerver. Ezért a kódot egy try-catch (próbáld meg - kapd el) blokkba tesszük. Ha hiba történik, a kód nem omlik össze csúnyán, hanem kulturáltan kiírja a hibát.

<?php
// Adatbázis beállítások (XAMPP alapértelmezések)
$szerver = "localhost";
$adatbazis = "webshop";
$felhasznalo = "root";
$jelszo = ""; // XAMPP-ban alapból üres a jelszó!

try {
    // Létrehozzuk a PDO kapcsolatot
    $kapcsolat = new PDO("mysql:host=$szerver;dbname=$adatbazis;charset=utf8", $felhasznalo, $jelszo);
    
    // Beállítjuk, hogy a PDO dobjon kivételt (hibát), ha valami elromlik
    $kapcsolat->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "Sikeres csatlakozás az adatbázishoz!";
    
} catch(PDOException $hiba) {
    // Ha hiba van, itt kapjuk el
    echo "Csatlakozási hiba: " . $hiba->getMessage();
}
?>

2. Lépés: Adatok lekérdezése és kiíratása

Ha a kapcsolat sikeres, küldhetünk egy SQL SELECT parancsot a szervernek. A kapott eredményt a PHP egy Asszociatív Tömbbe (kulcs-érték párokba) teszi, amit egy foreach ciklussal gyönyörű HTML kártyákká alakíthatunk.

<?php
// 1. Megírjuk az SQL parancsot
$sql = "SELECT keresztnev, email FROM felhasznalok";

// 2. Elküldjük a parancsot az adatbázisnak
$lekerdezes = $kapcsolat->query($sql);

// 3. Az összes eredményt kimentjük egy PHP tömbbe
$felhasznalok = $lekerdezes->fetchAll(PDO::FETCH_ASSOC);
?>

<!-- 4. HTML generálása a PHP ciklussal -->
<h2>Regisztrált felhasználóink:</h2>
<ul>
    <?php foreach($felhasznalok as $ember): ?>
        <li>
            Név: <?php echo $ember['keresztnev']; ?> - 
            Email: <?php echo $ember['email']; ?>
        </li>
    <?php endforeach; ?>
</ul>

Ezzel a módszerrel működik a világ összes dinamikus weboldala. A Facebook is pontosan így kéri le a posztokat az adatbázisból, és rajzolja ki őket a képernyődre!

← Előző lecke Következő lecke: Biztonság és SQL Injection →