Rasťo Turek / 17. 02. 2004, 00:00
Skôr, ako sa pustíme do seriálu „Ako na ...“ je nutné vysvetliť základy mysql, keďže bolo mnoho otázok o tom, čo je mysql, ako ho používať a podobne. MySQL je skutočne kvalitný databázový stroj, ktorý spracováva databázy a výsledky zasiela inému programu. Všetko si vysvetlíme počas dvoch možno až troch dieloch, záleží na tom, aké dlhé budú jednotlivé články.
Inštalácia
Teda keď začneme od začiatku, tak MySQL je hojne využívaný kvôli jeho absolútnej jednoduchosti, rýchlosti spracovania údajov a požiadaviek a v poslednom rade kvôli tomu, že je zadarmo. Teda toto robí s MySQL veľmi silný a účinný nástroj pri vytváraní kvalitných aplikácií a to nielen v php, ale aj v asp, js, delphi, c-ku a mnohých ďalších jazykoch. Samozrejme, že my sa zaoberáme php a teda nejdem tu opisovať, čo dokáže mysql s inou aplikáciou. Php obsahuje v takmer všetkých verziách podporu mysql a tá je implementovaná, teda nemusíte po inštalácii pridávať žiadne moduly, nič zapínať, proste ide. Ak chcete mať mysql, apache, php a phpMyAdmin hneď po kope bez nutnosti nastavenia, stiahnite si Php Home Edition na www.php.sk. Viac nájdete v článku „Čo Vás knihy nenaučia“. Ak máte všetko nainštalované tak ako má byť, je dobre si databázu najskôr trošku prezrieť a teda sa pozrieť na to, ako funguje jej záznamy a ako sa pridávajú alebo odoberajú. Nechcem sa baviť o príkazoch priamo pre mysql, ale ako sa používajú už priamo v php.
Pripojenie
V prvom rade musíte mať script na pripojenie. S týmto scriptom sme sa už stretli v mojom predošlom článku, kde sme vypisovali tipy do stránky. Avšak ja ho napíšem ešte raz a popíšem ho. Tento script je možné napísať dvoma spôsobmi. Prvý je priamo script a teda jednoducho ho naimportujete do scriptu a bude fungovať. Druhý spôsob je ho napísať ako funkciu, čo už väčšinou využívajú programátori pre zložitejšie scripty, kde potrebuje volať funkciu a predať jej parameter, ako napríklad meno databázy. To všetko si však ukážeme.
Prvý spôsob:
if (!@$spojenie = MySQL_Connect("server", "user", "password")):
echo "Nepodarilo sa pripojiť k databáze!";
die;
endif;
if (!@$select = MySQL_Select_Db("databaza")):
echo "Chyba pri výbere databáze!";
die;
endif;
Teda vytvoríme si podmienku na pripojenie k databáze a overíme, či sa spojenie podarilo. Ak áno, pokračujeme bez problémov a vyberieme databázu, v ktorej budeme mať svoje tabuľky. Ak sa nám to nepodarilo, tak vypíšeme do stránky chybu. Teraz vysvetlím, čo sú to za hodnoty, ktoré voláme vo funkciách MySQL_Connect a MySQL_Select_Db:
- server – linka, kde beží mysql, väčšinou je to localhost, niekedy aj priamo linka ako napríklad db.lammer.sk
- user – meno užívateľa pre pripojenie k mysql
- password – heslo užívateľa pre pripojenie k mysql
- databaza – tu zadáte databázu, v ktorej budete mať svoje údaje
Asi by bolo dobré vysvetliť aj ako mysql funguje. Jednoducho mysql ako každý databázový stroj obsahuje niekoľko druhov úložišť pre Vaše dáta. Úplne nadradená je databáza. Tá môže obsahovať x tabuliek a každá tabuľka môže obsahovať y dát. Teda spravidla ak si objednáte webhosting, dostanete len jednu databázu, do ktorej si môžete ukladať svoje dáta do tabuliek. Takže ďalšou jednotkou je tabuľka, ktorá vytvorí pre ukladanie dát akési pravidla, teda príkladom:
CREATE TABLE inet(
id int(8) auto_increment,
name varchar(250) not null,
pass varchar(250) not null,
PRIMARY KEY id(id)
) TYPE = MyISAM;
Teda si predstavte, že týmto poviete mysql asi toto:
Vytvor tabuľku inet, ktorá bude obsahovať riadok stĺpec id s príznakom číslo, ktoré pri doplnení dát do tabuľky zdvihne číslo vždy x+1, kde x je aktuálne číslo id. Ďalej vytvor stĺpec name s príznakom reťazec o dĺžke znakov 250, do ktorého musia byť vždy zapísane dáta, čo zabezpečuje parameter not null. Ďalej vytvor stĺpec pass s rovnakými vlastnosťami ako stĺpec name. Vytvor primárny kľúč, ktorý pomáha pri rýchlejšom vyhľadávaní. Nakoniec priraď tabuľke typ, ktorým je MyISAM.
Takto sa interpretuje príkaz mysql a ten založí tabuľku inet s parametrami aké ste udali. Poďme si ukázať aj druhý spôsob:
Druhý spôsob:
Function pripoj()
{
if (!@$spojenie = MySQL_Connect("server", "user", "password")):
echo "Nepodarilo sa pripojiť k databáze!";
die;
endif;
if (!@$select = MySQL_Select_Db("databaza")):
echo "Chyba pri výbere databáze!";
die;
endif;
}
Tento spôsob je o to lepší, že si môžete funkciu zavolať tam, kde potrebujete a teda môžete lepšie ovládať celý beh scriptu. Ale jednou z najväčších výhod je asi to, že môžete vkladať dáta pri volaní funkcie. Tu je už tak upravený script aby načítaval dáta až po zavolaní funkcie a až po vložení potrebných dát. Tu je už spomínaný script:
$server = “server”;
$user = “user”;
$password = “password”;
$databaza = “databaza”;
Function pripoj($server, $user, $password, $databaza)
{
if (!@$spojenie = MySQL_Connect("$server", "$user", "$password")):
echo "Nepodarilo sa pripojiť k databáze!";
die;
endif;
if (!@$select = MySQL_Select_Db("$databaza")):
echo "Chyba pri výbere databáze!";
die;
endif;
}
Keby ste teraz kdekoľvek zavolali funkciu pripoj(), tak by Vám tak by sa nič nestalo. Poďme si ukázať, ako by sme zavolali funkciu v prvom prípade a v druhom prípade.
V prvom prípade:
pripoj();
V druhom prípade:
$server = “server”;
$user = “user”;
$password = “password”;
$databaza = “databaza”;
pripoj($server, $user, $password, $databaza);
Keď si to preberieme zistíte, že je to úplne jednoduché. Teda v prvom prípade stačí zavolať len funkciu a netreba jej predávať žiadne dáta a funkcia bude vykonaná. V druhom prípade však musíte predať najskôr dáta a až potom sa funkcia prevedie. V prvom prípade sa však dáta nedajú vložiť mimo funkcie a teda musíte vložiť dáta priamo do funkcie. V druhom prípade síce musíte dáta najskôr vložiť, ale nemusíte ich vkladať do funkcie, teda premenné môžete mať mimo scriptu pre pripojenie. Tento spôsob využívajú všetky open-source produkty, aby mohli všetky premenné dať do jedného konfiguračného súboru, ktorý si už užívateľ nastaví sám.
Najpoužívanejšie príkazy pre MySQL
mysql_affected_rows -- Zistí počet riadkov, ktoré boli ovplyvnené predchádzajúcou operáciou.
mysql_change_user – Zmení užívateľa pri aktuálnom pripojení
mysql_client_encoding -- Vráti názov použitej znakovej sady
mysql_close -- Ukončí pripojenie k serveru MySQL
mysql_connect -- Ustanoví pripojenie k serveru MySQL
mysql_create_db – Vytvorí novú databázu
mysql_data_seek – Presúva interný ukazovateľ výsledku
mysql_db_name – Vyberie názov databázi
mysql_db_query – Posiela MySQL požiadavku SQL spolu s aktívnym názvom databáze
mysql_drop_db – Vymaže databázu MySQL
mysql_errno – Vracia číslo chybovej hlášky predošlej operácie
mysql_error – Vracia text chybovej hlášky predošlej operácie
mysql_fetch_array – Vracia výsledný riadok ako asociatívne pole
mysql_fetch_field – Zistí informácie o stĺpci výsledku a vracia ho ako objekt
mysql_fetch_lengths – Zistí maximálnu veľkosť dát každého stĺpca výsledku
mysql_fetch_object – Vracia výsledný riadok ako objekt
mysql_fetch_row – Vracia výsledný riadok ako pole
mysql_field_flags – Vracia príznaky odpovedajúce zadanej položke výsledku
mysql_field_len – Vracia dĺžku zadanej položky
mysql_field_name – Vracia meno zadanej položky výsledku
mysql_field_seek – Nastavuje ukazovateľ výsledku na offset zadanej položky
mysql_field_table – Vracia meno tabuľky, ktorá obsahuje zadanú položku
mysql_field_type – Vracia typ zadanej položky výsledku
mysql_free_result – Uvolní pamäť výsledku
mysql_insert_id – Vracia identifikátor výsledku generovaný predchádzajúcou operáciou INSERT
mysql_list_dbs – Vypisuje databázi dostupné na MySQL
mysql_list_fields – Vracia zoznam položiek výsledku
mysql_list_tables – Vracia zoznam tabuliek v databázi MySQL
mysql_num_fields – Vracia počet položiek výsledku
mysql_num_rows – Vracia počet riadkov výsledku
mysql_pconnect – Otvára stále spojenie zo serverom MySQL
mysql_query - Posiela MySQL požiadavku SQL
mysql_result – Vracia dáta výsledku
mysql_select_db – Vyberie databázu MySQL
mysql_tablename – Získava názov tabuľky alebo databáze z identifikátora výsledku
Myslím, že toto už nadnes stačilo. Podľa týchto základov sa môžete aspoň čiastočne zorientovať v problematike databázového stroja MySQL.
Prajem všetkým veľa úspechov pri kódovaní nových kvalitných aplikácií.
Rastislav Turek // lammer.sk
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk