Databáze nám slouží k ukládání dat a jejich opětovnému načítání. Nejčastěji se setkáme s databázemi, se kterými můžeme komunikovat pomocí jazyka SQL. Mezi tyto databáze patří například MySQL, MS-SQL nebo MariaDB.
Databáze je strukturována do tabulek. Každá tabulka má svůj název a obsahuje položky jednoho typu. V databázi je zvykem vše pojmenovávat v jednotném čísle, malými písmeny, bez interpunkce a mezer. Pokud chce zvolit víceslovný název, použijeme podtržítko _. V databázi tedy můžeme najít tabulky s názvy uzivatel, clanek, typ_produktu.
Každá tabulka obsahuje sloupce, které představují atributy (vlastnosti), které můžeme do tabulky ukládat. Každý sloupec má nastaven svůj datový typ, který do něj může být uložen, zároveň je možné nastavit, zda je vyplnění hodnoty v daném sloupci povinné, nebo zda hodnota ve sloupci může být null. Řádky v tabulce poté představují jednotlivé záznamy.
| varchar | Řetězec (maximálně 255 znaků) |
|---|---|
| text | Delší text (maximálně 65535 znaků) |
| int | Číslo |
| float | Desetinné číslo |
| datetime | Datum a čas |
Další můžete najít zde: https://www.mysqltutorial.org/mysql-data-types.aspx
Pro správu databáze existuje velké množství nástrojů. Velice jednoduchý a často používaný je Adminer. Umožňuje nám prohlížet data v databázi, vkládat nová data, vytvářet tabulky, vyhledávat v databázi, nebo databázi importovat či exportovat.

Na příkladu výše můžete vidět, jak se pomocí admineru vytváří tabulka. Je zvykem u každé tabulky uvádět sloupec id a u něj vybrat volbu AI (AUTO INCREMENT), které nám zajistí automatické generování unikátního čísla pro každý záznam v tabulce. Dále si můžete všimnout, jak lze u sloupečků povolit, aby uložená hodnota mohla být null.
<?php
/** zdroj: https://jecas.cz/pdo */
// Připojovací údaje
define('SQL_HOST', 'database.skosacek.cz');
define('SQL_DBNAME', 'skosacekkurz');
define('SQL_USERNAME', 'skosacekkurz');
define('SQL_PASSWORD', '12345');
$dsn = 'mysql:dbname=' . SQL_DBNAME . ';host=' . SQL_HOST . ';charset=utf8mb4';
$user = SQL_USERNAME;
$password = SQL_PASSWORD;
try {
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die('Connection failed: ' . $e->getMessage());
}
V kódu se nejdříve nastavují konstanty s údaji pro připojení k databázi. Poté se provede pokus o připojení a pokud je spojení navázáno, tak se uloží objekt do proměnné $pdo.
Nad tímto objektem můžeme poté volat dotazy do databáze. Například:
<?php
$dotaz = $pdo->prepare("SELECT * FROM clanek");
$dotaz->execute();
$clanky = $dotaz->fetchAll(PDO::FETCH_ASSOC);
?>
Kód výše uloží všechny články z databáze do proměnné $clanky jako pole.