Návrh a tvorba WWW stránek 1/14 PHP a databáze nejčastěji MySQL součástí balíčků PHP navíc podporuje standard ODBC PHP nemá žádné šablony pro práci s databází princip práce s databází je stále stejný opakované využití základ je jazyk SQL + rozšíření prostředí WinMySQLAdmin, textový režim, PhpMyAdmin
Návrh a tvorba WWW stránek 2/14 vytvoření databáze CREATE DATABASE název; vytvoření tabulky Jazyk SQL CREATE TABLE název (atribut1 typ [modifikátory], ); modifikace struktury tabulky ALTER TABLE název ADD COLUMN název typ[after FIRST]; ALTER TABLE název DROP COLUMN název; ALTER TABLE název MODIFY název nový_typ [modifik.]; ALTER TABLE název CHANGE název nový_název nový_typ]; smazání tabulky DROP TABLE název; DELETE FROM název;
Návrh a tvorba WWW stránek 3/14 vkládání záznamů do tabulky Jazyk SQL INSERT INTO název VALUES (seznam_hodnot); mazání záznamů DELETE FROM název [WHERE podmínka]; úprava záznamů UPDATE název SET atribut=hodnota [WHERE podmínka];
Návrh a tvorba WWW stránek 4/14 Jazyk SQL výběr dat SELECT nejpoužívanější a zároveň nejvariabilnější příkaz SQL jediný příkaz umožňující výběr dat z databáze čtení SELECT seznam_atributu FROM seznam_tabulek [WHERE podminky] [GROUP BY atributy] [HAVING podminky] [ORDER BY atributy] [LIMIT pocet]; většinou nepovinné části příkazů => variabilita za příkazem SELECT následuje seznam atributů, případně * dále příkaz FROM se seznamem tabulek, kterých se výběr týká podmínka WHERE omezení výsledku
Návrh a tvorba WWW stránek 5/14 Jazyk SQL výběr dat SELECT GROUP BY sumarizace podle určitého atributu HAVING BY složitější podmínky, které nelze vyjádřit WHERE ORDER BY řazení výsledků dotazu, standardně ASC LIMIT počet výsledných záznamů SELECT * FROM tabulka; SELECT jmeno,email FROM tabulka; SELECT jmeno,email FROM tabulka WHERE jmeno LIKE "J%" ORDER BY jmeno; SELECT * FROM tabulka WHERE poznamka="zaplatit" LIMIT 5
Návrh a tvorba WWW stránek 6/14 Datové typy celočíselné TINYINT, INT (INTEGER), BIGINT s pohyblivou ř. čárkou FLOAT, DOUBLE, REAL datum a čas DATE, DATETIME řetězce CHAR, VARCHAR (255) BLOB, TEXT (BLOB rozlišuje velikost písmen, 65536) výčtový typ ENUM("hodnota1,hodnota2, ") - 65535 množina SET("hodnota1,hodnota2, ") - 64
Návrh a tvorba WWW stránek 7/14 Modifikátory NOT NULL atribut je vyžadován, pokud není zadán => chyba UNIQUE všechny hodnoty ve sloupci musí být unikátní PRIMARY KEY unikátní, nesmí chybět AUTO_INCREMENT automatické zvýšení hodnoty, celočíselné DEFAULT hodnota v případě že hodnota atributu není zadána ZEROFILL zápis 0 před číslem BINARY na řetězcové typy rozlišuje velikost písmen CREATE TABLE tabulka ( id INTEGER PRIMARY KEY AUTO_INCREMENT, jmeno VARCHAR(50), poznamka TEXT); Názvy tabulek, sloupců a atributů mohou být na rozdíl od příkazů SQL case sensitive.
Návrh a tvorba WWW stránek 8/14 1. z příkazového řádku Možnosti práce s databází řádkový režim stačí samotné MySQL, bez PHP, bez webového serveru
Návrh a tvorba WWW stránek 9/14 2. PhpMyAdmin Možnosti práce s databází celá aplikace v PHP grafické rozhraní práce s databází i bez znalostí SQL
Návrh a tvorba WWW stránek 10/14 MySQL v PHP všechny funkce pro práci s databází mysql začínají mysql připojeni k databázovému serveru mysql_connect() s parametry server, username, password <? mysql_connect("localhost","dbuser","dbpass");?> uživatele lze vytvářet, nastavovat jim práva atd. funkce vrací celočíselnou hodnotu, v případě nezdaru false je vhodné při práci s databází testovat výsledek <? $spojeni = mysql_connect( ) or die ("Nepodařilo se připojit k databázovému serveru");?> mysql_pconnect() perzistentní připojení aplikace využije existující připojení, jinak vytvoří nové
Návrh a tvorba WWW stránek 11/14 MySQL v PHP výběr používané databáze (odpovídá příkazu use název_databáze) <? mysql_select_db("název") or die ("Vybraná databáze neexistuje");?> položení dotazu nejčastěji využívaná funkce mysql_query, jejíž parametrem je příkaz SQL vrací false v případě neúspěchu, většinou kvůli chybě v syntaxi v případě úspěšného provedení vrací true a nabízí funkce: - mysql_affected_rows() počet ovlivněných řádků - mysql_num_rows() počet řádků obsažených ve výsledku /* mysql_query("set character_set_client=cp1250"); mysql_query("set character_set_connection=cp1250"); mysql_query("set character_set_results=cp1250"); */
Návrh a tvorba WWW stránek 12/14 MySQL v PHP zpracování dotazu výsledek příkazů INSERT, UPDATE, DELETE není třeba dále zpracovávat (stačívědět zda byl dotaz vykonán) jinak je tomu u příkazu SELECT, který je potřeba zpracovat mysql_fetch_array() fce pro přístup k hodnotám výsledku dotazu zpřístupní vždy jede řádek výsledku dotazu v asociativním poli při každém dalším volání vrací další řádek výsledku dotazu pokud již další řádek neexistuji, vrací false využívá se ve spojení s cyklem while mysql_fetch_row() vrací běžné pole (ne asociativní), bez možnosti přístupu k jednotlivým položkám výsledku dotazu přes jejich název
Návrh a tvorba WWW stránek 13/14 MySQL v PHP zpracování dotazu <? $db = mysql_connect( ) or die("nepřipojeno"); mysql_select_db("nazev",$db); $sql = mysql_query("select * FROM users") or die("dotaz neproveden"); echo "<table style=\"border:solid 2px red;\"> <tr><td><b>jméno</b></td> <td><b>příjmení</b></td></tr>"; $zaznam = mysql_fetch_array($sql); while ($zaznam) { } echo "<tr><td>".$zaznam['jmeno']."</td> <td>".$zaznam['prijmeni']."</tr></tr>"; $zaznam = mysql_fetch_array($sgl); echo"</table>";?>
Návrh a tvorba WWW stránek 14/14 ODBC databáze v PHP ODBC databázový standard umožňující komunikaci s databází bez ohledu na její typ skripty jsou přenositelné mezi různými databázemi mezi aplikaci a databázi je vložen ovladač, který zprostředkovává obecné databázové dotazy konkrétnímu databázovému serveru instalace ovladače ODBC pro mysql na www.mysql.com funkce pro práci s ODBC jsou podobné: odbc_connect() odbc_exec() odpovídámysql_query() atd.