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.