 
                
  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