| Rubrika Php / mysql
Využívanie unikátnych kľúčov v MySQL databáze
Využívanie indexov v MySQL je jednou z najbežnejších operácií,
minimálne s indexom PRIMARY sa každý už určite stretol. Slúži na
určenie unikátnosti záznamu – s týmto indexom sa potom spája vlastnosť
auto_increment, ktorá zabezpečí automatické pripočítanie
k indexu pri každom vložení záznamu do tabuľky. Takto vzniká unikátne
číselné ID záznamu, podľa ktorého sa dá záznam vždy bez problémov
identifikovať.
MySQL obsahuje však aj iné druhy indexov, teraz budeme hovoriť o indexe UNIQUE. Ten slúži na identifikáciu stĺpcov, ktoré musia byť v tabuľke jedinečné – teda nemôže sa stať, aby dva záznamy mali rovnaký obsah stĺpca, nad ktorým je vytvorený index UNIQUE. Využívanie tohto indexu je vhodné napríklad v tabuľke, kde máme uložených užívateľov webstránky v štruktúre napríklad:
| meno | heslo | id | |
|---|---|---|---|
| jozef | jozef@jozef.sk | 789jkl789123ôlkj | 1 |
Pri prihlasovaní užívateľa porovnáme zadaný email a heslo s emailom a heslom v databáze. Aby však všetko fungovalo korektne nesmieme dopustiť, aby boli v tabuľke dva (alebo viac) záznamov s rovnakým emailom. Riešení je viacero, napríklad pred odoslaním registrácie užívateľa skontrolovať, či zadaný email už v tabuľke neexistuje. No najčistejším riešením je vytvoriť index UNIQUE nad stĺpcom email.
//mysql kód ALTER TABLE tabulka ADD UNIQUE ('nazov_stlpca')
Pokiaľ by sa snažil užívateľ zaregistrovať s rovnakým mailom, aký
už raz v tabuľke zadaný je, SQL dotaz sa skončí chybou. Číslo tejto
chyby je 1062, čo nám v spolupráci s funkciou
mysql_errno veľmi jednoducho umožňuje vypísať chybovú
hlášku a užívateľovi vysvetliť, že takýto email už v tabuľke
raz je.
if (mysql_errno() == 1062) { echo 'Na zadaný email je už registrované konto.'; }
Problém môže nastať, len ak sa niekedy v budúcnosti zmení číslovanie SQL errorov :).
Tomáš Mašek
naspäť
prispieť do diskusie [2]
Vyhľadávanie
Posledných 5 komentárov
Viac z rubriky
Ako ochrániť includované PHP súbory?
Automatické generovanie formulárov z MySQL
Automatický prevod texu na hyperlink
Cachovanie do HTML súboru
Cachovanie s pomocou funkcií serialize/unserialize
Čiernobiele obrázky v PHP
Dynamická tvorba URL
Fulltext ako názov stĺpca v tabuľke
Getcwd – Ako ľahko získať absolútnu cestu
Import z Excelu do MySQL databázy
Maximálny timeout vykonávania SQL skriptu
Microtime – rýchlosť načítania stránky
Odstránenie diakritiky v PHP pomocou iconv()
Overovanie a kontrola formulárov v PHP
Parsovanie XML súboru v PHP
PHP a zachytenie nedoručených mailov
PHP funkcia implode
Porovnávanie a dátovy typ DATE
Práca so súbormi pri zapnutom safe_mode
Prihlasovanie uživateľa prostredníctvom $_SESSION
Real-time kontrola e-mailovej adresy AJAX-om
Spracovanie dátového typu ENUM do HTML selectu
Strpos a offset – nájdenie výskytu znaku v reťazci
Tip: Generovanie PDF súborov
Tip: jednoduché šifrovanie a dešifrovanie v PHP
Tip: správne includovanie súborov
Ukladanie jazykových verzií statických textov
Veľmi jednoduchý návod na pekné URI
Vkladanie obrázkov do databázy
Výber záznamov začínajúcich číslom
Vyčistenie viacrozmerného poľa
Vyhľadávanie, pekné URI a diakritika
Vypísanie abecedy v PHP
Zaradenie jednej položky do viacerých kategórií
Zistenie hodnoty ďalšieho ID – autoincrement
Zložené MySQL dotazy – LEFT JOIN
Zvýrazňovanie syntaxe kódu – GeSHi
Pridať komentár



