1 / 26

Návrh a tvorba WWW Přednáška 6

Návrh a tvorba WWW Přednáška 6. PHP II – Databáze. MySQL. Výhody široká komunita uživatelů otevřený zdrojový kód rychlost sytému k dispozici pro mnoho platforem Nevýhody nedostatečný výkon při náročných operacích nepodporuje pokročilé databázové techniky

Download Presentation

Návrh a tvorba WWW Přednáška 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Návrh a tvorba WWWPřednáška 6 PHP II – Databáze

  2. MySQL Výhody • široká komunita uživatelů • otevřený zdrojový kód • rychlost sytému • k dispozici pro mnoho platforem Nevýhody • nedostatečný výkon při náročných operacích • nepodporuje pokročilé databázové techniky Systém dostupný na http://www.mysql.com/.

  3. MySQL a PHP Rozhraní PHP • mysql • mysqli

  4. Rozhraní mysqli I. Otevření spojení se serverem MySQL. Argumenty: • hostitel • uživatelské jméno • heslo • název databáze • port TCP • unixový doménový soket Inicializace rozhraní MySQLi. Vrací objekt, jenž bude používán společně s funkcí mysqli_real_connect.

  5. Rozhraní mysqliII. Nastavení předvoleb spojení. Otevření spojení se serverem. Uzavření spojení se serverem. Načtení posledního chybového kódu resp. Zprávy vztahující se k neuskutečněnému spojení.

  6. Dotazy Odeslání dotazu na DB server. Argumenty: • objekt spojení • dotaz • režim (s vyrovnávací pamětí, nebo bez ní) Odeslání více dotazů na DB server. Argumenty: • objekt spojení • dotazy

  7. Zpracování výsledku Zpracování dotazu a načtení řádku výsledku. Zpracování dotazu a načtení výsledku do asociativního pole. Zpracování dotazu a načtení výsledku do objektu.

  8. Binding (vázání proměnný) Vázání vstupních proměnných • Příprava příkazu • Svázání příkazu a vstupních proměnných • Přiřazení hodnot proměnným • Spuštění příkazu

  9. Binding (vázání proměnný) Vázání výstupních proměnných • Příprava příkazu • Spuštění příkazu • Svázání příkazu a výstupními proměnnými • Načtení dat do výstupních proměnných

  10. SQLite Výhody • samostatnost, nezávislost • součástí PHP 5 • jednoduchost a rychlost • procedurální i objektové rozhraní Nevýhody • neexistence serverového procesoru • soubory nejsou binárně bezpečné • transakce zamykají soubory Systém dostupný na http://www.sqlite.org/.

  11. SQLite Otevření spojení k databázi SQLite. Argumenty: • název souboru • oprávnění (chmod) • chybová zpráva Uzavření spojení

  12. SQLite příklad

  13. PDO PDO je rozšíření PHP (od verze 5.1) umožňující jednotným způsobem komunikovat s různými databázemi. PDO podporuje • DBLIB: FreeTDS / Microsoft SQL Server / Sybase • Firebird(http://firebird.sourceforge.net/): Firebird/Interbase 6 • IBM (IBM DB2) • INFORMIX - IBM Informix Dynamic Server • MYSQL (http://www.mysql.com/): MySQL 3.x/4.0 • OCI (http://www.oracle.com): Oracle Call Interface • ODBC: ODBC v3 (IBM DB2 and unixODBC) • PGSQL (http://www.postgresql.org/): PostgreSQL • SQLITE (http://sqlite.org/): SQLite3.x Dostupní na http://www.php.net/manual/en/book.pdo.php.

  14. Příklad PDO Více příkladů např. na http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html#4.3

  15. Oracle DB v PHP Podpora databázového stroje Oracle je zajištěna prostřednictvím extenzí: • Oracle • OCI8 • PDO OracleInstant client (http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html). Účet na DB vám vytvoří cvičící předmětu Databázové systémy 2. The Undeground PHP and Oracle Manual Christopher Jones, Alison Holloway http://www.oracle.com/us/technologies/026973.pdf

  16. Spojení Otevření spojení Uzavření spojení Změna hesla

  17. Select • Rozebrání příkazu (Parse) – parsování dotazu pro vykonání • Přiřazení dat (Bind) – přiřazení dat do dotazu pro lepší výkon a bezpečnost • Vykonání (Execute) – vykonání dotazu • Načtení (Fetch) – vrácení výsledku dotazu z databáze

  18. Zpracování výsledku Funkce načtení oci_fetch_all() – vrátí výsledek najednou oci_fetch_array() – vrátí výsledek v poli oci_fetch_assoc() – vrátí výsledek v asociativním poli oci_fetch_object() – vrátí výsledek jako objekt oci_fetch_row() – vrátí výsledek v indexovaném poli Parametry pro funkci oci_fetch_array() OCI_ASSOC – vrátí výsledek jako asociativní pole OCI_NUM – vrátí výsledek jako číselně indexované pole OCI_BOTH – vrátí výsledek jako indexované i asociativní pole (výchozí hodnota) OCI_RETURN_NULLS – vrátí PHP NULL hodnotu pro NULL data OCI_RETURN_LOBS – vrátí aktuální LOB data místo OCI- LOB zdroje.

  19. Insert, delete, update, create, drop Pro vykonání Data DefinitionLanguage (DDL) and Data ManipulationLanguage (DML) dotazů, jako například CREATE, INSERT, atd. je nejjednodušší použít příkaz pro parsování SQL dotazu (oci_parse) a jeho následné vykonání (oci_execute).

  20. Transakce Transakce je logická jednotka zpracování dat, která se skládá z jednoho nebo více SQL příkazů provedených jedním uživatelem. Transakce končí buď úspěšným „commitnutím“, tedy promítnutím změn do databáze, nebo rollbackem, vrácením databáze do původního stavu, resp. neprovedením změn naakumulovaných v průběhu transakce. Funkce související s transakcemi oci_execute($s, OCI_DEFAULT); - bez provedení commitu oci_rollback($c); - vrácení databáze do původního stavu

  21. Obsluha chyb Obsluha chyb je v knihovně OCI řešena funkcí oci_error(). Funkce vyžaduje různé argumenty závisející na kontextu předešlého volání. Návratová hodnota funkce je pole. Prvky pole vrácen funkcí oci_error(): $e["code"] – číslo chyby $e["offset"] – pozice chyby v SQL dotazu $e["message"] – chybová zpráva $e["sqltext"] – SQL dotaz

  22. Přiřazení dat Bindingje vysoce doporučovaným prostředkem pro cachování dotazu na databázovém serveru a znovupoužití exekučních plánů. Dále nabízí způsob jak chránit dotazy proti SQL injection.

  23. Omezení počtu řádku výsledku (limit) Oracle nezná klíčové slovo LIMIT a proto je pro omezení počtu řádků výstupu SQL dotazu potřeba použít speciální konstrukci, která prostřednictvím vnořeného selectu toto omezení zprostředkuje.

  24. Omezení počtu řádku výsledku (limit) Oracle nezná klíčové slovo LIMIT a proto je pro omezení počtu řádků výstupu SQL dotazu potřeba použít speciální konstrukci, která prostřednictvím vnořeného selectu toto omezení zprostředkuje.

  25. Auto-increment Autoinkrementování hodnoty sloupečku tabulky je v prostředí Oracle realizováno prostřednictvím sequence a trigeru. Vytvoření sequence a trigeru Příklad konkrétního použití při konstrukci dotazu

  26. Získání posledního vloženého ID OCI8 nemá žádnou explicitní funkci “insert_id”, která by vracela poslední vložené ID. Místo toho lze použít RETURN INTO. Obdobně pomocí descriptoru

More Related