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.