Prakticky s MySQL - 4. díl

Týden se sešel s týdnem a my se po krátké exkursi do světa CGI podíváme skokem z Perlu rovnou na nejlepšího přítele MySQL, PHP. Ukážeme si základní praktiky při spojení těchto dvou fenoménů namísto obecného úvodu, takže je co číst.
Proč PHP tady a teď?

Tento díl našeho seriálu měl být původně o zpracovávání dat z databáze MySQL skrze skript CGI přes DBI, abychom si mohli udělat detailnější náhled na rozdíly mezi Perlem a PHP, rozhodl jsem se pro malou odbočku do světa PHP aby bylo na čems "stavět". Nejprve si tedy povíme a ukážeme základy práce s PHP a MySQL. K tomu nám postačí tento díl. V tom dalším si poté paralelně ukážeme tvorbu jednoho skriptu v Perlu i PHP a výsledkem bude, což mohu prozradit s ohledem na to, že kvality PHP nejsou žádným veřejným tajemstvím, následování seriálu o PHP a výstavba našeho vlastní systému firemní aplikace pro správu běžných denních událostí ve firmě. Perlu se tedy budeme věnovat ještě příště, protože by bylo zbytečné se těmi stejnými problémy a následně rozdíly u Perlu a PHP zabývat odděleně, pokud chceme zvolit pro nás vhodnějšího partnera pro pole vývoje webových aplikací.

Spuštěné info o PHP na našem serveru.

Vracíme se k PHP

Personal Home Page - PHP, to je dnes ve všech pádech skloňovaná zkratka. Proč? Tato zjednodušená forma Perlu nemusí být pouze jako CGI, ale i v klasickém HTML generovaném pojetí. Obsahuje výkonnou knihovnu funkcí a programování aplikací API s možností použití coby mezičlánku na serveru. V současnosti nejužívanější verzí je PHP 4. Stavba stránky s PHP je jednoduchá, kód s označením PHP se provede na serveru před vygenerováním výsledné stránky dle kódu PHP, HTML zůstane HTML. Nejjednodušším způsobem aplikace PHP v dokumentech jsou tzv. short tagy <? a ?> , do nichž je kód uzavírán. Nyní se už ale pojďme věnovat základům MySQL a PHP.

Ukázka zdrojového kódu PHP a MySQL.

PHP a MySQL

V následující tabulce si vyjádříme přehled funkcí v PHP pro práci s MySQL.

Název funkce Popis
Mysql_connect Otevře připojení k serveru MySQL.
Mysql_pconnect Otevře trvalé připojení k serveru MySQL.
Mysql_select_db Vybere databázi MySQL.
Mysql_close Zavře připojení k serveru MySQL.
Mysql_change_user Změní identitu přihlášeného uživatele bez nutnosti dalšího aktivního připojení.
Mysql_drop_db Odstraní databázi MySQL.
Mysql_db_query Odešle dotaz a určený server MySQL.
Mysql_query Odešle dotaz na již vybraný server MySQL.
Mysql_fetch_array Načte řádek výsledné sady jako asociativní pole.
Mysql_result Vrátí výsledek dotazu.
Mysql_fetch_row Vrátí řádek vybrané sady jako výpočtové pole.
Mysql_affected_rows Vrátí počet ovlivněných řádků operací INSERT, UPDATE nebo DELETE.
Mysql_num_rows Vrátí počet řádků ve výsledné sadě.
Mysql_fetch_field Vrací pole tabulky (sloupec) jako objekt.
Mysql_fetch_lengths Vrací délku každého pole (sloupce) výsledné sady.
Mysql_fetch_object Vrací řádek vysledné sady jako objekt.
Mysql_field_name Vrací název určeného pole (sloupce) výsledné sady.
Mysql_list_fields Vrací seznam polí určené sady.
Mysql_num_fields Vrací počet polí (sloupců) výsledné sady.
Mysql_field_seek Nastavuje ukazatel výsledné sady na index vybraného pole (sloupce).
Mysql_field_type Vrací datový typ vybraného pole (sloupce) výsledné sady.
Mysql_field_flags Vrací příznaky přidružené k určitému poli výsledné sady.
Mysql_insert_id Vrací identifikátor ID generovaný předchozí operací INSERT.
Mysql_data_seek Přesouvá interní ukazatel sady záznamů.
Mysql_free_result Uvolní paměť přidělenou výsledné sadě.
Mysql_errno Vrací číslo chybové zprávy z předchozí operace MySQL.
Mysql_error Vrací text chybové zprávy z předchozí operace MySQL.
Mysql_list_dbs Vrací seznam databází dostupných prostřednictvím vybraného serveru MySQL.
Mysql_list_tables Vrací seznam dostupných tabulek v rámci vybrané databáze MySQL.
Mysql_field_len Vrací délku vybraného pole (sloupce) tabulky.
Mysql_field_table Vrací název tabulky, která obsahuje dané pole (sloupec).
Mysql_tablename Vrací název tabulky daného pole (sloupce).

Pro správu databází MySQL se používá PHPMyAdmin, zde v anglické verzi.

Samotné PHP a MySQL v akci

Základním krokem je vždy připojení k databázi. K tomu nám slouží příkaz mysql_connect s touto syntaxí:

Mysql_connect([názevhostitele[:port][:/cesta/k/socketu]], uživatelské jméno, heslo);

V praxi se používá třeba toto:

$connection = mysql_connect("localhost", $user, $heslo);

Tvorba nové databáze je dle následujícího modelu:

$createdb = mysql_create_db("moje");

A abychom mohli plnohodnotně klást dotazy SQL, použijeme dle tohoto návodu příkaz mysql_query:

Mysql_Query(dotaz[, identifikátorpřipojení]);

@$query = mysql_query("SELECT ID FROM Users ORDER BY ID DESC limit 20,40");

if(!$query):
echo"Tak to nevyšlo..";
endif;

Jak si pozorný čtenář všiml, doplnil jsem vykonání příkazu i o kontrolu jeho provedení formou výstupu hodnoty boolean o chybovosti. Další úkonem při práci s databází je její zvolení:

Mysql_select_db(názevdatabáze[, identifikátorpřipojení]);
Mysql_select_db("Users");

Na závěr dnešní lekce se podíváme na tvorbu tabulek a lepší pojetí správy chyb v našich skriptech. Tabulky tvoříme přes příkaz SQL dle tohoto modelu:

@$query = mysql_query("CREATE TABLE Users(ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Jmeno VARCHAR(85),
Prijmeni VARCHAR(150),
Vek INT,
Vytvoreno DATE)");

Abychom si naše prozatím lehké ukázky PHP a MySQL trošinku okořenili, ukážeme si správu chyb dotazů SQL:

$sql="CREATE TABLE Users(ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Jmeno VARCHAR(85),
Prijmeni VARCHAR(150),
Vek INT,
Vytvoreno D
ATE)";

If($query = mysql_query("$sql")):

Echo "Vyšlo to:)..";
Else:
Echo "Chyba číslo: ".mysql_errno()."<br>Popis chyby: ".mysql_error();
Endif;

Nejprve si do proměnné uložíme sql dotaz, ten poté vyvoláme v rámci podmínkové cyklu if, který když se příkaz nevykoná správně vypíše důvod našeho nezdaru. Pro dnešek bychom povídání o MySQL skončili a příště se podívám již na rozdíly mezi zpracování dat v Perlu a PHP. Dnes se rozloučíme stylově, náhledem na PHP diskusi, kterou si brzo také vytvoříme :-).

Diskuse v PHP.

Diskuze (5) Další článek: Finální KDE 3.0

Témata článku: , , , , , , , , , , ,