c4ec313eeb
[FÁZE-1][db] Přidáno připojení k databázi přes PDO [FÁZE-1][install] Přidán instalační skript s tvorbou tabulek a prvního admina
48 lines
1.9 KiB
PHP
48 lines
1.9 KiB
PHP
<?php
|
||
// ============================================================
|
||
// PŘIPOJENÍ K DATABÁZI
|
||
// ============================================================
|
||
// Tento soubor vytvoří připojení k MySQL databázi přes PDO.
|
||
// PDO je modernější a bezpečnější způsob práce s databází než
|
||
// starší mysqli (které bylo použito v původním projektu).
|
||
//
|
||
// Výsledkem je proměnná $pdo, kterou pak používají ostatní
|
||
// soubory pro dotazy na databázi.
|
||
// ============================================================
|
||
|
||
// Pokud config.php ještě není načtený, načteme ho
|
||
if (!defined('DB_HOST')) {
|
||
require_once __DIR__ . '/config.php';
|
||
}
|
||
|
||
// DSN = Data Source Name – řetězec popisující připojení k DB
|
||
// utf8mb4 = plná podpora Unicode (diakritika, emoji, ...)
|
||
// utf8mb4_unicode_ci = správné řazení a porovnávání znaků
|
||
$dsn = 'mysql:host=' . DB_HOST
|
||
. ';dbname=' . DB_NAME
|
||
. ';charset=utf8mb4';
|
||
|
||
// Nastavení chování PDO
|
||
$moznosti = [
|
||
// Při chybě vyhoď výjimku (exception) místo tichého selhání
|
||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||
|
||
// Výsledky vrací jako asociativní pole (např. $radek['email'])
|
||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||
|
||
// Vypne emulovné prepared statements – používáme pravé,
|
||
// které chrání před SQL injection na úrovni databáze
|
||
PDO::ATTR_EMULATE_PREPARES => false,
|
||
];
|
||
|
||
// Pokus o připojení k databázi
|
||
try {
|
||
$pdo = new PDO($dsn, DB_USER, DB_PASS, $moznosti);
|
||
} catch (PDOException $e) {
|
||
// Při chybě připojení zobrazíme obecnou chybovou hlášku.
|
||
// Detailní chybu NEZOBRAZUJEME uživateli – mohla by prozradit
|
||
// citlivé informace o struktuře serveru.
|
||
// Chybu ale zalogujeme do PHP error logu pro administrátora.
|
||
error_log('Chyba připojení k databázi: ' . $e->getMessage());
|
||
die('Nepodařilo se připojit k databázi. Zkuste to prosím později.');
|
||
} |