Dnes se struΦn∞ seznßmφme s SQL-p°φkazy pro mazßnφ a modifikaci zßznam∙ v tabulce. PotΘ si ukß₧eme, jak se dajφ SQL-p°φkazy zaΦle≥ovat do skript∙.
DELETE FROM
.
Zßznamy, kterΘ chceme smazat, musφme urΦit podmφnkou v klauzuli
WHERE
:
DELETE FROM jmΘno_tabulky WHERE podmφnkaPraktickß ukßzka smazßnφ zam∞stnance, jeho₧ osobnφ Φφslo je 1023:
DELETE FROM Zamestnanci WHERE OsobniCislo = 1023;
UPDATE
:
UPDATE jmΘno_tabulky SET polo₧ka=hodnota, ... WHERE podmφnkaTen modifikuje vÜechny zßznamy, kterΘ vyhovujφ podmφnce. Pokud chceme m∞nit pouze jeden zßznam -- to je ostatn∞ nejtypiΦt∞jÜφ p°φklad -- je vhodnΘ jako podmφnku uvΘst test primßrnφho klφΦe na jedineΦnou hodnotu:
UPDATE Zamestnanci SET Plat = 14000 WHERE OsobniCislo = 1023;P°φkaz zm∞nφ plat Jana Novßka na 14000 (osobnφ Φφslo pana Novßka je 1023).
My si dnes ukß₧eme nejjednoduÜÜφ p°φklad komunikace s databßzφ a tφm
bude vypsßnφ obsahu nßm ji₧ znßmΘ tabulky Zamestnanci
.
Nejprve si cel² postup ukß₧eme v prost°edφ PHP za pou₧itφ nativnφho
ovladaΦe pro databßzi MySQL.
Pro p°ipojenφ k databßzi slou₧φ funkce mysql_Connect()
.
Ta mß t°i parametry. Prvnφm z nich je adresa, na kterΘ je dostupn²
SQL-server. V naÜem p°φpad∞, kdy na jednom poΦφtaΦi b∞₧φ SQL i
WWW-server, pou₧ijeme adresu localhost
. DalÜφ dva parametry
jsou jmΘno a heslo u₧ivatele, pod kter²m se k databßzovΘmu serveru
p°ipojujeme. NaÜe pokusnß databßze test
je vÜak
p°φstupnß ka₧dΘmu, a proto m∙₧eme jmΘno a heslo vynechat. K p°ipojenφ
tedy pou₧ijeme p°φkaz:
mysql_Connect("localhost");K samotnΘmu provßd∞nφ SQL-dotaz∙ pou₧ijeme funkci
mysql
. Ta
mß dva parametry -- prvnφm je jmΘno databßze, ve kterΘ chceme dotaz
provΘst, a druh² parametr je samotn² SQL-dotaz. Funkce vracφ hodnotu,
pomocφ kterΘ pak m∙₧eme pracovat s v²sledkem dotazu. K vybrßnφ ·daj∙ o
vÜech zam∞stnancφch poslou₧φ nßsledujφcφ k≤d:
$result = mysql("test", "SELECT * FROM Zamestnanci");P°es prom∞nnou
$result
je nynφ dostupn² v²sledek dotazu.
Pokud nßs zajφmß poΦet zßznam∙, kter² vyhovuje naÜemu dotazu, m∙₧eme
pou₧φt funkci mysql_NumRows($result)
.
Pro p°φstup k jednotliv²m polo₧kßm v²sledku slou₧φ funkce
mysql_Result()
. Ta mß t°i parametry:
mysql_Result(id_v²sledku, Φφslo_zßznamu, jmΘno_polo₧ky);Zßznamy jsou ve v²sledku Φφslovßny od nuly a jejich poΦet zjistφme prßv∞ pomocφ funkce
mysql_Result()
. Pro vypsßnφ jmΘna
prvnφho zam∞stnance, kter² vyhovuje naÜemu dotazu, m∙₧eme pou₧φt p°φkaz:
echo mysql_Result($result, 0, "Jmeno");Pokud chceme vypsat vÜechny zßznamy, vytvo°φme si cyklus, kter² vÜechny zßznamy zpracuje. PoΦet iteracφ tohoto cyklu nßm urΦφ v²sledek funkce
mysql_NumRows()
.
Nynφ ji₧ vφme vÜe, co je pot°eba pro vytvo°enφ naÜeho prvnφho skriptu
pracujφcφho s databßzφ. Obsah tabulky Zamestnanci
p°ehledn∞
zformßtujeme pomocφ tabulky:
<HTML> <HEAD> <TITLE>V²pis vÜech zam∞stnanc∙</TITLE> </HEAD> <BODY> <H1>V²pis vÜech zam∞stnanc∙</H1> <TABLE BORDER=1 CELLPADDING=2> <TR><TH>Osobnφ Φφslo</TH> <TH>JmΘno</TH> <TH>RodnΘ Φφslo</TH> <TH>Adresa</TH> <TH>Plat</TH> </TR> <? mysql_Connect("localhost"); $result = mysql("test", "SELECT * FROM Zamestnanci"); $pocet = mysql_NumRows($result); echo "V tabulce \"Zamestnanci\" je $pocet zßznam∙.\n"; echo "<P>"; for($i=0; $i<$pocet; $i++): echo "<TR>\n"; echo "<TD ALIGN=CENTER>". mysql_Result($result, $i, "OsobniCislo"). "</TD>\n"; echo "<TD>".mysql_Result($result, $i, "Jmeno"). "</TD>\n"; echo "<TD>".mysql_Result($result, $i, "RC"). "</TD>\n"; echo "<TD>".mysql_Result($result, $i, "Adresa"). "</TD>\n"; echo "<TD ALIGN=RIGHT>". mysql_Result($result, $i, "Plat"). "</TD>\n"; echo "</TR>\n"; endfor; mysql_Close(); ?> </TABLE> </BODY> </HTML>Pro pr∙chod vÜemi zßznamy v²sledku jsme s v²hodou pou₧ili cyklus
for
, jeho₧ °φdφcφ prom∞nnou ($i
) pou₧φvßme p°i
odvolßvßnφ na jednotlivΘ zßznamy v²sledku.
Novinkou je funkce mysql_Close()
, kterß uzav°e spojenφ
s databßzφ.
To vÜak nebude jen tak. Nejprve musφme nainstalovat ODBC ovladaΦe
pro nßÜ databßzov² server (MySQL) a pak pro po₧adovanou databßzi
(test
) vytvo°it datov² zdroj ODBC.
ODBC ovladaΦe pro MySQL nalezneme nap°. na ΦeskΘm zrcadle
http://mirror.opf.slu.cz/mysql/ v souboru
myodbc-2.50.17.zip
nebo nov∞jÜφm. Po rozbalenφ ZIP-archivu
spustφme instalaΦnφ soubor setup.exe
-- ODBC ovladaΦe pro
MySQL jsou nainstalovßny.
Nynφ musφme vytvo°it datov² zdroj ODBC. Ten odpovφdß jednΘ databßzi a
pomocφ n∞j mohou k databßzi p°istupovat vÜechny aplikace, kterΘ
podporujφ ODBC. Pro vytvo°enφ zdroje spustφme v Ovlßdacφm
panelu
ikonu ODBC
a vybereme zßlo₧ku System
DSN
. Nynφ pomocφ tlaΦφtka Add...
p°idßme nov² datov²
zdroj. V nßsledujφcφm dialogovΘm okn∞ jako server samoz°ejm∞ vybereme
MySQL. Objevφ se okno (obr. 2) pro nastavenφ parametr∙ zdroje dat.
Windows DSN Name
vyplnφme jmΘno datovΘho zdroje.
DoporuΦuji pro datov² zdroj pou₧φt jmΘno stejnΘ jako mß databßze --
alespo≥ se v tom pozd∞ji vyznßme. Mezi dalÜφ d∙le₧itΘ parametry pat°φ
jmΘno databßze (test
) a adresa serveru
(localhost
). Parametry doporuΦuji nastavit na hodnotu 256,
kterß zamezφ p°φpadn²m problΘm∙m s n∞kter²mi starÜφmi aplikacemi.
Nynφ se dostßvßme k samotnΘmu principu prßce s databßzemi v ASP. Ten
je obdobn² jako u PHP. Nejprve se musφme k p°ipojit k datovΘmu zdroji.
Vytvo°φme si proto objekt spojeni
, kter² slou₧φ pro
p°ipojovßnφ ke zdroj∙m dat:
Set spojeni = Server.CreateObject("ADODB.Connection")K samotnΘmu p°ipojenφ slou₧φ metoda Open, jejφm₧ parametrem je identifikace datovΘho zdroje. My pou₧ijeme datov² zdroj
test
:
spojeni.Open "DSN=test"Pro zadßvßnφ dotaz∙ a zpracovßnφ jejich v²sledk∙ musφme vytvo°it objekt typu
Recordset
-- pojmenujeme jej t°eba
vysledek
:
Set vysledek = Server.CreateObject("ADODB.Recordset")SQL-dotaz se spouÜtφ pomocφ metody
Open
, kterß mß jako
druh² parametr ji₧ vytvo°enΘ spojenφ k po₧adovanΘmu datovΘmu zdroji:
vysledek.Open "SELECT * FROM Zamestnanci", spojeniV p°φÜtφm dφle dokonΦφme povφdßnφ o databßzφch v prost°edφ ASP. Pak si ukß₧eme, jakΘ v²hody p°inßÜφ pou₧itφ ODBC oproti nativnφm ovladaΦ∙m a jak se s ODBC pracuje v PHP. Nßsledovat bude ukßzka skript∙, kterΘ umo₧nφ u₧ivateli do tabulek p°idßvat novΘ zßznamy, modifikovat stßvajφcφ, mazat zastaralΘ apod.