Vlastní komunikace z hlediska skriptu PHP vypadá následovně:
- připojení k databázovému serveru MySQL a výběr databáze
- zaslání příkazů a převzetí výsledných dat (či aktualizace těchto dat) z databázového serveru MySQL
- odpojení se od databázového serveru MySQL
Než tyto tři kroky provedeme, měli bychom znát několik základních funkcí PHP, kterými "ovládáme" databázi. Tyto funkce používáme za pomoci ovladačů. Nejčastější typy ovladačů:
- mysql (pouze pro verze PHP 5.5 a nižší, zastaralé a již se nedoporučuje používat)
- mysqli (MySQL Improved, parametry se do dotazů předávají velmi nepohodlně)
- PDO (PHP Database Objects, jedná se o nejnovější a velmi kvalitní objektový ovladač, který se jednoduše používá a podporuje kromě MySQL ještě několik databází.
- a další
Funkcím, které začínají výrazem mysql, je již v PHP lepší se úplně vyhnout. Pro PHP do verze 5.4 se mohlo používat funkce MySQL. Od vyšších verzí PHP je nutné používat funkci MySQLi nebo PDO_MySQL. Více informací najdete např. v tomto článku (odkaz na web http://jecas.cz) Několik základních příkazů pro práci s databází:
- mysqli_connect - otevírá spojení se serverem MySQL
- mysqli_select_db - vybíra MySQL databázi
- mysqli_query - posíla MySQL příkaz
- mysqli_num_rows - vrací počet řádků výsledku příkazu
- mysqli_affected_rows - vrací počet řádků, které byly ovlivněny poslední operaci
- mysqli_fetch_array - zpracovává jeden řádek výsledku příkazu, vrací asociativní pole, číselné pole či oboje
- mysqli_fetch_row - zpracovává jeden řádek výsledku příkazu, vrací číselné pole
- mysqli_fetch_assoc - zpracovává jeden řádek výsledku příkazu, vrací asociativní pole
- mysqli_unbuffered_query - posílá MySQL příkaz bez automatického zpracování výsledku a bez ukládání do vyrovnávací paměti
- mysqli_error - vrací chybný řádek posledního MySQL příkazu
- mysqli_change_user - mění uživatele pro určité připojení
- mysqli_free_result - uvolňuje paměť od výsledku příkazu
- mysqli_result - vrací data výsledku příkazu
- mysqli_fetch_object - zpracovává jeden řádek výsledku příkazu a vrací objekt
- mysqli_client_encoding - vrací kódování spojení
- mysqli_close - ukončuje spojení s MySQL serverem
- mysqli_pconnect - vytvoří trvalé připojení se serverem MySQL
- mysqli_create_db - vytvoří MySQL databázi
- mysqli_db_name - vrací název databáze
- mysqli_db_query - přepíná se na uvedenou databázi a posílá příkaz
- mysqli_field_len - vrací délku pole
- mysqli_get_host_info - vrací informaci o MySQL připojení
- mysqli_get_client_info - vrací informaci o MySQL uživateli
- mysqli_field_flags - vrací atributy uvedeného pole
- mysqli_drop_db - smaže MySQL databázi
Připojení k databázovému serveru MySQL a výběr databáze
Pro připojení k databázovému serveru MySQL slouží funkce mysqli_connect. Často se doplňuje o kontrolu, zda se připojení podařilo. Dále se provádí samotné dotazy do databáze a nasleduje odpojení, i když to PHP provede většinou samo i bez našeho přičinění. Patří to ale ke slušnému stylu:
Tento zdrojový kód můžete mít přímo v souboru s jakýmkoliv dalším skriptem nebo bývá často jako samostatný soubor, např. db.php. Pokud se bude jednat o samostatný soubor, musíte vynechat "Odpojení od databáze", protože jinak nebude možné s databází cokoliv dělat. Soubor db.php tedy může vypadat např. takto:
Tento soubor (obvykle s názvem db.php, config.php, admin-config.php configuration.php apod....) pak bývá součástí dalších souborů, kteří jej mají vložen např. přes příkaz include nebo require. Ukončení spojení s databází pak bývá právě tam.
Zaslání příkazů a převzetí výsledných dat
Výpis dat z databáze se prování nejčastěji pomocí příkazu jazyka SQL, což je příkaz SELECT Jeho základní struktura je tato:
- SELECT - seznam požadovaných položek
- FROM seznam tabulek
- WHERE – podmínka
- GROUP BY - seznam položek
- HAVING - skupinová podmínka
- ORDER BY - třídění;
Následuje výběr tabulky z databáze. V našem příkladu to bude tabulka "knihy". V minulé kapitole byla vytvořena a následně smazána, proto si ji musíte vytvořit znovu:
Dále ještě znovu vložíme 3 knihy:
Výběr tabulky provedeme funkcí mysqli_query např. takto:
Abychom výsledná data skutečně viděli, je třeba, abychom byli připojeni na databázi a aby data ve volané tabulce existovaly. Dále si necháme vypsat data z této tabulky a to funkcí mysqli_fetch_array. Cyklus WHILE obsahuje nově vzniklou proměnnou $vysledek, která pak postupně načítá data do polí s určitým názvem. Název pole odpovídá názvům sloupců z tabulky v databázi.
Informaci o zdárném ukončení spojení s databází již nevypisuje. Návštěvníky webu by tak zbytečně obtěžovala.
Pokud chceme seřadit vypsané záznamy podle nějakého kritéria (v tomto případě podle čísel knih od největšího po nejmenší), přidáme k příkazu SELECT následující:
Dále můžeme vypsat např. počet záznamů v tabulce funkcí mysql_num_rows:
Kompletní zdrojový kód:
SQL příkazy za pomoci ovladače PDO
Protože ovladač mysqli přináší určitá bezpečnostní rizika (především SQL injection), je někdy vhodnější používat ovladač PDO. Zdrojový kód pro vložení dat (v tomto případě nové knihy č. 4) by pak vypadal např. takto:
Jedná se o objektově orientované programování, které není součástí tohoto základního materiálu. Zdroj - http://jecas.cz/pdo