Návrh a tvorba WWW stránek
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
1/14
Návrh a tvorba WWW stránek
2/14
Jazyk SQL • vytvoření databáze CREATE DATABASE název;
• vytvoření tabulky CREATE TABLE název (atribut1 typ [modifikátory], …);
• modifikace struktury tabulky ALTER ALTER ALTER ALTER
TABLE TABLE TABLE TABLE
název název název název
• smazání tabulky DROP TABLE název; DELETE FROM název;
ADD COLUMN název typ[AFTER|FIRST]; DROP COLUMN název; MODIFY název nový_typ [modifik.]; CHANGE název nový_název nový_typ];
Návrh a tvorba WWW stránek
3/14
Jazyk SQL • vkládání záznamů do tabulky 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
Možnosti práce s databází 1. z příkazového řádku
– řádkový režim – stačí samotné MySQL, bez PHP, bez webového serveru
Návrh a tvorba WWW stránek
Možnosti práce s databází 2. PhpMyAdmin
– celá aplikace v PHP – grafické rozhraní – práce s databází i bez znalostí SQL
9/14
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
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 "
Jméno | Příjmení |
"; $zaznam = mysql_fetch_array($sql); while ($zaznam) { echo "".$zaznam['jmeno']." | ".$zaznam['prijmeni']." |
"; $zaznam = mysql_fetch_array($sgl); } echo"
";
?>
13/14
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.