Podpora databází v PHP
PHP podporuje několik databázových systémů. I když k práci s každým z nich slouží jiné funkce, jejich použití i jména jsou velice podobná. Obecně můžeme říci, že funkce pro práci s určitým SŘBD začínají jeho názvem. PHP tak obsahuje funkce začínající na mysqli_, které slouží pro práci s MySQL, funkce začínající na mysqli_, které slouží pro práci s PostgreSQL, funkce začínající na Ifx_ slouží k práci s Informixem a mohli bychom pokračovat dál a dál. Pokud to snad ještě někdo nepochopil, připomínám, že funkce pro práci s ODBC začínají na ODBC_. Práce s databázemi je v PHP velice jednoduchá. Nejprve se musíme připojit k SQL-serveru. K tomu obvykle slouží funkce pojmenovaná xxx_Connect(). Po připojení k serveru můžeme zadávat SQL-příkazy. Nejčastěji k tomu slouží funkce xxx_Exec() nebo xxx_Query(). Získaný výsledek můžeme číst funkcemi xxx_Fetch_Row() a xxx_Result(). Těchto pár funkcí nám při práci s databází obvykle stačí.
V PHP máme tři základní možnosti přístupu k databázi MySQL:
- Rozšíření PHP MySQL - základní rozšíření umožňující práci s MySQL. Doporučuje se ho používat pouze do verze MySQL 4.1.3. I když je funkční i u novějších verzí, neumožňuje využití nových možností MySQL.
- PHP Data Objects (PDO) - abstraktní vrstva pro komunikaci s databázemi. Umožňuje konzistentní přístup ke všem podporovaným databázím.
- Rozšíření PHP MySQLi (MySQL Improved) - rozšíření vyvinuté pro MySQL 4.1.3 a novější. Umožňuje přístup k novým funkcím. Součástí PHP je od verze 5. MySQLi podporuje jak objektově orientovaný, tak i procedurální styl programování.
Rozšíření MySQL se v současné době nedoporučuje používat, protože není efektivní. Pro nové projekty je vhodné využít MySQLi nebo PDO.
Práci s MySQL musíme zahájit připojením k serveru pomocí funkce mysqli_Connect(). Parametrem funkce je jméno počítače a databáze, ke které se připojujeme. Výsledkem funkce je číslo, které identifikuje připojení k serveru a můžeme jej použít v dalších funkcích. Pokud se nepodaří připojit k MySQL, vrací funkce mysqli_Connect() hodnotu false
V PHP se k MySQL databázi můžete připojit pomocí funkce mysqli_connect(). Jejími parametry jsou název hostitele, uživatelské jméno a heslo. Po připojení k MySQL si ještě musíte vybrat svoji databázi, což se děje příkazem mysqli_select_db.
<?php $spojeni=mysqli_connect("localhost", "uzivatel", "heslo","databáze" ); mysqli_set_charset($spojeni, "utf8"); mysqli_select_db("mojedb"); //mysqli_select_db() nemusíme použít, pokud databázi nastavíme ve funkci mysqli_connect() //práce s databází např. výpis, editace, ... mysqli_Close($spojeni)?>
$spojeni je proměnná, která identifikuje spojení vytvořené se serverem.
mysqli_Close($spojeni) Ukončení spojení s MySQL
mysqli_query()
Vykonání SQL-příkazů - parametry jsou číslo spojení a dotaz zapsaný v jazyce SQL. Funkce vrací identifikátor výsledku, kterým se na získaná data odvoláváme v dalších funkcích. SQL-příkazy SELECT, INSERT, UPDATE, DELETE,CREATE, DROP….. pokud při provádění SQL-příkazu dojde k chybě - vrací false
Pro výběr všech údajů z tabulky Zamestnanci můžeme použít:
$vysledek=mysqli_query($spojeni,"SELECT * FROM Zamestnanci ORDER BY Jmeno"); Proměnná $vysledek nyní obsahuje identifikátor výsledku. Pomocí něj můžeme číst jednotlivé záznamy výsledku a zjišťovat spoustu dalších věcí.
Přidání nového záznamu do tabulky
Předpokládejme, že v proměnných $jmeno, $prijmeni, $email a $narozen máme uloženy informace o člověku, kterého chceme do adresáře přidat. Do proměnných se údaje mohly dostat například z formuláře, který vyplnil uživatel. Stránka, která tento formulář obsluhuje, pak bude obsahovat tento kód pro přidání nového záznamu do tabulky:
<?php $spojeni=mysqli_Connect("localhost", "user","password", "dbname" ); $result = mysqli_query($spojeni,"insert into adresar (jmeno, prijmeni,email,narozen )values ('$jmeno', '$prijmeni', '$email', '$narozen')" ); if ($result) echo "Do adresáře byl úspěšně přidán nový záznam."; else echo " Nový záznam se do adresáře nepodařilo přidat."; mysqli_Close($spojeni); ?>
Zrušení záznamu v tabulce
Předpokládejme, že identifikační číslo záznamu, který chceme smazat, máme uloženo v proměnné $id. Vymazání pak v PHP provedeme takto:
<?php $spojeni=mysqli_Connect("localhost", "user","password", "dbname" ); $result = mysqli_query ($spojeni,"delete from adresar where id=$id"); if ($result) echo "Záznam se podařilo úspěšně vymazat."; else echo "Záznam nelze vymazat"; mysqli_Close($spojeni); ?>
Změna záznamu v tabulce
Předpokládejme, že u člověka, jehož $id známe, chceme změnit e-mailovou adresu na hodnotu proměnné $email:
<?php $spojeni=mysqli_Connect($spojeni,"localhost", "user","password", "dbname" ); $result = mysqli_query($spojeni,"update adresar set email='$email' where id=$id"); if ($result) echo "Záznam se podařilo úspěšně aktualizovat."; else echo "Záznam nelze aktualizovat."; mysqli_Close($spojeni); ?>
Výpis záznamů z tabulky
mysqli_Num_Rows() zjistí počet záznamů výsledku (nejčastěji určí počet řádků z tabulky pro příkaz SELECT)
echo "V Tabulce Adresář je".mysqli_Num_Rows($vysledek)."záznamů";
Pro čtení jednotlivých záznamů výsledku můžeme použít několik funkcí.
mysqli_Fetch_Array() - přečte jeden záznam výsledku a obsah jeho položek uloží do asociativního pole. Funkci jako parametr musíme předat číslo záznamu, který chceme přečíst. Záznamy jsou číslovány od nuly.
mysqli_Fetch_Row() Načte záznam výsledku do pole
mysqli_Fetch_Row(vysledek) Funkce načte jeden záznam výsledku (jeden řádek tabulky). Obsah každé položky je uložen do jednoho prvku pole. Položky jsou ukládány postupně počínaje indexem 0. Pokud při čtení záznamu dojde k chybě (např. již nejsou žádné další záznamy k přečtení), vrací funkce false.
<?php include("spojeni.php"); $vyber=mysqli_query($spojeni,"select * from adresar "); for($i=0;$i<mysqli_num_rows($vyber);$i++) { $zaznam=mysqli_fetch_array($vyber); $id=$zaznam["id"]; //nebo $id=$zaznam[0]; $jmeno=$zaznam["jmeno"]; $prijmeni=$zaznam["prijmeni "]; $narozen=$zaznam["narozen"]; $email =$zaznam["email"]; echo " $id, $jmeno,$prijmeni ,$narozen, $email <br>"; mysqli_Close($spojeni); } ?>