A jakým způsobem pracujete s MySQL vy?
V tomto seriálu se podíváme, jak s MySQL pracovat trochu rozumnějším než běžným způsobem. Předem je třeba upozornit, že tento postup není jediný možný a určitě ani ne nejlepší. Každopádně by se mohlo hodně programátorů a “programátorů“ přiučit. K pochopení příkladů je dobré znát objekty. Objekty zde popisovat nebudu, proto si případně chybějící znalosti doplňte jinde. Poslední podmínkou je, že skript funguje pouze pod PHP5. Vzhledem ke končící podpoře PHP4, by to však neměl být závažný problém.O co půjde
Tak v první části seriálu si rozdělíme postupy podle pokročilosti, popíšeme si jejich chyby a budeme postupovat dál až k mému příkladu. Znovu připomínám, že můj příklad není nejlepší ze všech možných, pouze bude nejpokročilejší ze všech uvedených. Před prvním příkladem ještě dodám, že v ukázkových dotazech budu psát SELECT…. , UPDATE… apod. V ukázkových příkladech nejde o obsah MySQL dotazu, čili tato syntaxe slouží čistě jako naznačení libovolného dotazu.
Nejhorší možný přístup
$result = mysql_query("UPDATE…");
echo "Provedeno.";
Zde nacházíme hrubou chybu a to v kontrole návratové hodnoty funkce. Čili pokud náš dotaz selžem skript není o této událostí informován a chyba se projeví později. Příčinou obvykle bývá warning později ve skriptu. V případě této ukázky, skript vypíše uživateli hlášku o úspěšné editaci dat, ve skutečnosti ovšem k žádné změně nedojde.
Mírné vylepšení předchozího příkladu
$result = mysql_query("UPDATE…")
or die("Nastala chyba ve skriptu……".mysql_error());
echo "Provedeno.";
Předchozí případ jsme rozšířili o odchycení chyby. Dobrá zpráva je, že uživatel už nebude mylně informován o provedení dotazu, i v případě jeho selhání. Tím ovšem výčet dobrých zpráv končí. To, co tomuto skriptu každý programování neznalý návštěvník stránky vyčte je, že kromě klasické chyby (Nastala chyba…) se zobrazí i chybová hláška přímo do databáze. Jako by nám nestačilo, že na webu nastala chyba, ještě navíc obtěžujeme už tak naštvaného uživatele jemu nic neříkající hláškou. Řešením by bylo odebrat funkci mysql_error(), ale to pak není moc výhodné pro nás programátory. Někdy je prostě potřeba si chybu přečíst.
Mírně pokročilý přistup
…
…
define (DEBUG, 1);
…
…
$result = mysql_query("UPDATE…")
or die( (DEBUG == 1) ? mysql_error() : "Nastala chyba ve skriptu……" );
echo "Provedeno.";
I když příklad vypadá jednoduše, je až s podivem, že na hodně webech, se používá nějaký z předchozích případů. Jak teda skript pracuje? Někde v nastavení si nastavíme, jestli chceme vypisovat user-friendly zprávy a nebo mysql chyby. Rozšíření rádku s or die netřeba popisovat.
Za chvíli na viděnou
Toto bude pro tento díl vše, v dalším se podíváme na můj návrh přístupu k databázi a to už za pomocí objektů. Komu jsou objekty cizí, bude mít čas si je nastudovat :)
Autor: Honzy