Základy databází v PHP: Od připojení přes SELECT až po INSERT

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.

1. Připojení k MySQL (rozhraní mysqli vs. PDO)

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();
}
?>

2. Základní SQL příkazy

Mezi nejpoužívanější příkazy patří:

INSERT 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>";
}
?>

3. Zabezpečení: SQL injection a ochrana

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"]]);
?>

4. Výpis dat v HTML tabulce

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>

5. Ukázka: Jednoduchá knihovna

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");
?>

Závěr

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.

Jak začít programovat?

Úvod do programování pro každého bez předchozích znalostí.

Stáhněte si náš ebook teď výjimečně zdarma!!!

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