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.