Chcete-li tvořit dynamické weby, bez databáze se neobejdete. PHP a MySQL tvoří silnou dvojici, která vám umožní ukládat a spravovat data návštěvníků. V tomto článku se naučíte, jak se k databázi připojit, jak psát základní SQL dotazy a jak ochránit svůj web před běžnými útoky.
PHP umožňuje dva způsoby připojení k databázi:
Připojení pomocí mysqli:
<?php
$conn = new mysqli("localhost", "root", "heslo", "knihy");
if ($conn->connect_error) {
die("Chyba připojení: " . $conn->connect_error);
}
?>
Připojení pomocí 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 připojení: " . $e->getMessage();
}
?>
Mezi nejpoužívanější příkazy patří:
SELECT
– načtení datINSERT
– vložení nového záznamuUPDATE
– úprava záznamuDELETE
– smazání záznamuINSERT s mysqli:
<?php
$sql = "INSERT INTO knihy (nazev, autor) VALUES ('1984', 'George Orwell')";
$conn->query($sql);
?>
SELECT s PDO:
<?php
$stmt = $pdo->query("SELECT * FROM knihy");
while ($row = $stmt->fetch()) {
echo $row["nazev"] . " - " . $row["autor"] . "<br>";
}
?>
Jednou z nejčastějších chyb je nechráněné zpracování vstupů od uživatelů. To může vést k tzv. SQL injection.
Chybné řešení:
$sql = "SELECT * FROM knihy WHERE autor = '" . $_POST["autor"] . "'";
Správné řešení (prepared statements):
<?php
$stmt = $pdo->prepare("SELECT * FROM knihy WHERE autor = :autor");
$stmt->execute(["autor" => $_POST["autor"]]);
?>
Pomocí jednoduché smyčky môžete data zobrazit v tabulce:
<table border="1">
<tr><th>Název</th><th>Autor</th></tr>
<?php
$stmt = $pdo->query("SELECT * FROM knihy");
while ($row = $stmt->fetch()) {
echo "<tr><td>" . htmlspecialchars($row["nazev"]) . "</td><td>" . htmlspecialchars($row["autor"]) . "</td></tr>";
}
?>
</table>
Formulář na přidání knihy (index.php):
<form action="vloz.php" method="post">
Název: <input type="text" name="nazev"><br>
Autor: <input type="text" name="autor"><br>
<input type="submit" value="Přidat knihu">
</form>
vloz.php:
<?php
$pdo = new PDO("mysql:host=localhost;dbname=knihy", "root", "heslo");
$stmt = $pdo->prepare("INSERT INTO knihy (nazev, autor) VALUES (:nazev, :autor)");
$stmt->execute([
"nazev" => $_POST["nazev"],
"autor" => $_POST["autor"]
]);
header("Location: index.php");
?>
PHP a MySQL vám umožní vytvořit weby, které nejsou jen statické, ale interaktivní a plně funkční. Je důležité nejen správně pracovat s databází, ale také zabezpečit přenos a zpracování dat, aby byla aplikace spolehlivá a bezpečná.
Chcete se to naučit od základů? Vyzkoušejte náš kurz PHP – Programovanie dynamických webových stránok v PHP a úvod do AJAXu, kde se vše naučíte na praktických příkladech a projektech.
Viac informacií preberáme na kurze:
Kurz PHP - Programování dynamických webových stránek v PHP a úvod do AJAXu
Marián Knězek