Základy databáz v PHP: Od pripojenia cez jednoduché SELECT až po INSERT

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.

1. Nastavenie pripojenia k MySQL (mysqli vs. PDO)

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

2. Základné SQL príkazy

Najčastejšie používané SQL príkazy sú:

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

3. Zabezpečenie: SQL injection a ochrana

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.

4. Zobrazovanie dát v HTML tabuľke

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>

5. Príklad: Jednoduchá knižnica

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.

Záver

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.

Ako začať programovať?

Úvod do programovania pre každého bez prechádzajúcich znalostí.

Stiahnite si náš ebook teraz výnimočne zdarma!!!

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

 

Súvisiace články: