PHP és MySQL Összekötése (PDO)
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!