Ak chcete vytvárať dynamické webové stránky s možnosťou ukladania a správy údajov, práca s databázou je nevyhnutnosť. V kombinácii s PHP je MySQL ideálnym riešením – je zadarmo, rozšírené a dobre zdokumentované. V tomto článku vás naučíme, ako sa na databázu pripojiť, spúšťať základné dotazy a zároveň zabezpečiť vašu aplikáciu pred bežnými chybami.
PHP ponúka dva hlavné spôsoby, ako sa pripojiť k MySQL:
Pripojenie pomocou mysqli:
<?php
$conn = new mysqli("localhost", "root", "heslo", "knihy");
if ($conn->connect_error) {
die("Chyba pripojenia: " . $conn->connect_error);
}
?>
Pripojenie pomocou PDO:
<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=knihy", "root", "heslo");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Chyba pripojenia: " . $e->getMessage();
}
?>
Najčastejšie používané SQL príkazy sú:
SELECT
– načítanie údajovINSERT
– pridanie nového záznamuUPDATE
– aktualizácia existujúceho záznamuDELETE
– odstránenie záznamuINSERT (mysqli):
<?php
$sql = "INSERT INTO knihy (nazov, autor) VALUES ('1984', 'George Orwell')";
$conn->query($sql);
?>
SELECT (PDO):
<?php
$stmt = $pdo->query("SELECT * FROM knihy");
while ($row = $stmt->fetch()) {
echo $row["nazov"] . " - " . $row["autor"] . "<br>";
}
?>
Ak prijímate vstup od používateľa (napr. cez formulár), nikdy ho nesmiete priamo vložiť do SQL dotazu! Inak riskujete útok tzv. SQL injection.
Chybné a nebezpečné:
$sql = "SELECT * FROM knihy WHERE autor = '" . $_POST["autor"] . "'";
Bezpečne pomocou pripravených výrazov (prepared statements):
<?php
$stmt = $pdo->prepare("SELECT * FROM knihy WHERE autor = :autor");
$stmt->execute(["autor" => $_POST["autor"]]);
?>
PDO automaticky ošetrí hodnoty, čím zabráni zneužitiu.
Na stránke môžete načítané údaje z databázy zobraziť v prehľadnej tabuľke:
<table border="1">
<tr><th>Názov</th><th>Autor</th></tr>
<?php
$stmt = $pdo->query("SELECT * FROM knihy");
while ($row = $stmt->fetch()) {
echo "<tr><td>" . htmlspecialchars($row["nazov"]) . "</td><td>" . htmlspecialchars($row["autor"]) . "</td></tr>";
}
?>
</table>
Formulár na pridanie knihy (index.php):
<form action="vloz.php" method="post">
Názov: <input type="text" name="nazov"><br>
Autor: <input type="text" name="autor"><br>
<input type="submit" value="Pridať knihu">
</form>
vloz.php:
<?php
$pdo = new PDO("mysql:host=localhost;dbname=knihy", "root", "heslo");
$stmt = $pdo->prepare("INSERT INTO knihy (nazov, autor) VALUES (:nazov, :autor)");
$stmt->execute([
"nazov" => $_POST["nazov"],
"autor" => $_POST["autor"]
]);
header("Location: index.php");
?>
Týmto spôsobom si viete vytvoriť vlastnú jednoduchú databázovú aplikáciu – napríklad knižnicu, evidenciu objednávok či katalóg produktov.
PHP a MySQL sú výkonná kombinácia pre tvorbu dynamických webových aplikácií. Dôležité je zvládnuť nielen technickú stránku pripojenia a dotazov, ale aj zabezpečenie – aby boli vaše údaje aj používateľské vstupy chránené.
Chcete sa naučiť PHP spolu s databázami do hĺbky a prakticky? Vyskúšajte náš kurz PHP – Programovanie dynamických webových stránok v PHP a úvod do AJAXu, kde si tieto veci precvičíte na reálnych príkladoch.
Viac informacií preberáme na kurze:
Kurz PHP - Programovanie dynamických webových stránok v PHP a úvod do AJAXu
Marián Knězek