V úvodní kapitole jsme si SQL představili jako jazyk pro komunikaci s „internetovými skladišti“. Abychom ale v takovém skladišti něco našli, nemůžeme tam data jen tak naházet na hromadu. Musí mít svůj jasný řád. V tomto díle se podíváme na to, jak jsou data organizována a jak si o ně správně říct.
Databáze jako organizovaný pořadač
Představte si celou databázi jako velký kancelářský pořadač. Uvnitř tohoto pořadače jsou jednotlivé listy (tabulky). Každá tabulka má své sloupce, které určují, co o dané věci evidujeme.
Pokud bychom měli tabulku uzivatele, její sloupce by mohly vypadat takto:
ID (unikátní číslo uživatele)
Jméno
Email
Datum_registrace
Každý nový uživatel pak představuje jeden řádek v této tabulce.
Než začneme: Jak se k datům dostat?
Aby mohl jazyk PHP s databází manipulovat, musíme nejdříve navázat spojení. K tomu se v moderním webovém vývoji používají čtyři základní klíče:
Hostitel (Server): Nejčastěji
localhost.Uživatelské jméno: Výchozí bývá
root.Heslo: Na lokálních serverech bývá často prázdné.
Název databáze: Jméno konkrétního "skladu", který jsme si vytvořili.
Příkaz SELECT: „Databáze, ukaž mi...“
Nejčastější činností, kterou s daty děláme, je jejich čtení. K tomu slouží příkaz SELECT. Je to v podstatě dotaz, kterým říkáme systému, jaké informace nás zrovna zajímají.
Základní syntaxe vypadá takto:
SELECT jmeno, email FROM uzivatele;
Tímto příkazem říkáme: „Vyber sloupce jmeno a email z tabulky uzivatele.“ Pokud bychom chtěli vypsat úplně všechny sloupce, které v tabulce existují, použijeme hvězdičku:
SELECT * FROM uzivatele;
Filtrování dat pomocí WHERE
V praxi málokdy potřebujeme vypsat úplně všechny uživatele najednou. Často hledáme někoho konkrétního – například při přihlašování. K tomu slouží klíčové slovo WHERE, které funguje jako filtr.
SELECT * FROM uzivatele WHERE jmeno = 'Admin';
Tento dotaz vybere pouze ty řádky, kde se ve sloupci jmeno nachází přesně hodnota 'Admin'. Podmínky můžeme i kombinovat, například hledat uživatele, kteří jsou z Prahy A zároveň je jim více než 18 let.
Bezpečnost na prvním místě
Již v úvodu jsme zmínili hackery. Při propojování PHP a SQL je kriticky důležité data ze vstupních formulářů řádně ošetřit. Pokud bychom totiž proměnné z formuláře vložili přímo do SQL dotazu bez kontroly, vystavujeme se riziku útoku zvaného SQL Injection, kdy útočník může pomocí speciálně napsaného textu smazat celou naši databázi.
V příští kapitole se podíváme na to, jak data do databáze poprvé vložit pomocí příkazu INSERT a jak se u toho efektivně bránit zmíněným útokům.
