Zend_Db a Zend_Db_Adapter

1,119 views

Published on

První část prezentací o knihovně Zend_Db, konkrétně popis adaptérů pro jednotlivé databáze

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,119
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Zend_Db a Zend_Db_Adapter

  1. 1. Ondřej Flídr <ul><ul><li>Zend_Db </li></ul></ul>
  2. 2. Základy <ul><li>Objektový přístup k databázi </li></ul><ul><li>Adaptéry pro jednotlivé databáze </li></ul><ul><li>Nepodporuje perzistentní spojení </li></ul><ul><li>Zend_Db_Table </li></ul><ul><li>Zend_Db_Select </li></ul><ul><li>Zend_Db_Statement </li></ul><ul><li>Zend_Db_Profiler </li></ul><ul><li>Zend_Db_Expr </li></ul>Ondřej Flídr
  3. 3. α i Ω Zend_Db - ::factory() <ul><li>Jediná metoda Zend_Db </li></ul><ul><li>Vytváří připravený objekt adaptéru </li></ul><ul><li>Konfigurace pomocí pole nebo Zend_Config </li></ul><ul><ul><li>Název adaptéru bez prefixu (obvykle Zend_Db_Adapter_) </li></ul></ul><ul><ul><li>Nastavení spojení a hodnot </li></ul></ul>Ondřej Flídr
  4. 4. Zend_Db_Adapter <ul><li>Výkonná moc Zend_Db </li></ul><ul><li>Reprezentují odlišnosti jednotlivých databází </li></ul><ul><li>Zend_Db_Adapter_Abstract </li></ul><ul><li>Lazy connect </li></ul><ul><ul><li>Adapter se připojuje, až když je to zapotřebí </li></ul></ul><ul><ul><ul><li>Možno vynutit - ::getConnection(); </li></ul></ul></ul><ul><li>Nenahrazuje PHP rozšíření </li></ul>Ondřej Flídr
  5. 5. Nastavení Zend_Db_Adaptér <ul><li>host </li></ul><ul><li>username </li></ul><ul><li>password </li></ul><ul><li>dbname </li></ul><ul><li>port </li></ul><ul><li>options – společné pro všechny adaptéry </li></ul><ul><li>driver_options – nastavení konkrétního driveru </li></ul><ul><li>adapterNamespace – prefix vlastních adaptérů </li></ul>Ondřej Flídr
  6. 6. Získávání dat <ul><li>::fetchAll() - všechna data, sloupce číslovány </li></ul><ul><li>::fetchRow() - první řádek, sloupce číslovány </li></ul><ul><li>::fetchAssoc() - všechna data, sloupce označeny názvem </li></ul><ul><li>::fetchCol() - první sloupec, řádky číslovány </li></ul><ul><li>::fetchPairs() - pole, první sloupec jako klíče, druhý hodnoty </li></ul><ul><li>::fetchOne() - pouze hodnota prvního sloupce v první řádku </li></ul><ul><li>Liší se použitým fetch modem </li></ul>Ondřej Flídr
  7. 7. Vložení dat <ul><li>::insert(); </li></ul><ul><li>První parametr název tabulky </li></ul><ul><ul><li>V případě pgsql schémat 'schema.tabulka' </li></ul></ul><ul><li>Druhý parametr asociativní pole </li></ul><ul><ul><li>'sloupec' => 'hodnota' </li></ul></ul><ul><li>Vrací počet ovlivněných řádků </li></ul><ul><li>Automatická kontrola dat – parametrizace </li></ul><ul><ul><li>Není nutné ošetřovat ručně </li></ul></ul><ul><li>Pro výrazy Zend_Db_Expr </li></ul>Ondřej Flídr
  8. 8. Vložení dat – ID vloženého řádku <ul><li>::lastInsertId(); </li></ul><ul><li>Pro případ sekvencí (např. Postgres) parametry </li></ul><ul><ul><li>Název tabulky </li></ul></ul><ul><ul><li>Název primárního klíče </li></ul></ul><ul><ul><li>Oba nepovinné </li></ul></ul><ul><ul><li><NT>_seq resp. <NT>_<NPK>_seq </li></ul></ul><ul><li>::lastSequenceId(); </li></ul><ul><ul><li>Pokud název sekvence neodpovídá schématu výše </li></ul></ul><ul><ul><li>Jako parametr název sekvence </li></ul></ul><ul><li>Nepoužívat SELECT MAX(id) FROM table </li></ul>Ondřej Flídr
  9. 9. Update dat <ul><li>::update(); </li></ul><ul><li>První dva parametry viz. Insert </li></ul><ul><li>Třetí parametr podmínka where </li></ul><ul><ul><li>Pole s podmínkami </li></ul></ul><ul><ul><li>Řetězce nebo Zend_Db_Expr </li></ul></ul><ul><ul><li>Nutno ruční quotování </li></ul></ul>Ondřej Flídr
  10. 10. Mazání dat <ul><li>::delete(); </li></ul><ul><li>První parametr název tabulky </li></ul><ul><li>Druhý parametr podmínky </li></ul><ul><ul><li>Platí totéž co u ::update(); </li></ul></ul>Ondřej Flídr
  11. 11. Ošetření dat <ul><li>Quotování </li></ul><ul><ul><li>Obrana proti SQL injection </li></ul></ul><ul><li>::quote() </li></ul><ul><ul><li>Vloženou hodnotu escapuje a obalí jako řetězec </li></ul></ul><ul><ul><ul><li>Zend_Db_Expr pouze vrací jako řetězec </li></ul></ul></ul><ul><ul><ul><li>Zend_Db_Select vyrenderuje a obalí () </li></ul></ul></ul><ul><ul><li>Druhý nepovinný parametr je datový typ </li></ul></ul>Ondřej Flídr
  12. 12. Ošetření dat <ul><li>::quoteInto() </li></ul><ul><ul><li>Nahrazuje placeholdery hodnotami </li></ul></ul><ul><ul><li>První parametr je řetězec, do kterého se vkládájí hodnoty </li></ul></ul><ul><ul><ul><li>Umístění hodnot označuje placeholder ? </li></ul></ul></ul><ul><ul><li>Druhý parametr je hodnota k ošetření </li></ul></ul><ul><ul><ul><li>Ošetřuje se pomocí ::quote() </li></ul></ul></ul><ul><ul><li>Třetí parametr je SQL datový typ </li></ul></ul><ul><ul><ul><li>Předává se jako druhý parametr ::quote() </li></ul></ul></ul><ul><ul><li>Čtvrtý parametr je počet placeholderů k nahrazení </li></ul></ul>Ondřej Flídr
  13. 13. Ošetření dat <ul><li>::quoteIdentifier() </li></ul><ul><ul><li>Ošetření názvů tabulek, sloupců apod. </li></ul></ul><ul><ul><li>Obaluje se znakem pro identifikátory dle adaptéru </li></ul></ul><ul><ul><ul><li>Pro Postgres &quot; , pro MySQL ` </li></ul></ul></ul><ul><ul><li>Obalené identifikátory jsou case sensitive! </li></ul></ul><ul><ul><li>Standartně automatické </li></ul></ul><ul><li>::quoteTableAs, ::quoteColumnAs </li></ul>Ondřej Flídr
  14. 14. Transakce <ul><li>::beginTransaction() - začátek transakce </li></ul><ul><li>::commit() - potvrzení transakce, zapsání změn </li></ul><ul><li>::rollBack() - zrušení transakce a změn </li></ul><ul><li>Každý příkaz je transakce </li></ul><ul><ul><li>Autocommit mod </li></ul></ul>Ondřej Flídr
  15. 15. Výpis a popis tabulek <ul><li>::listTables(); </li></ul><ul><ul><li>Pole se seznamem tabulek </li></ul></ul><ul><li>::describeTable(); </li></ul><ul><ul><li>Metadata tabulky </li></ul></ul><ul><ul><li>První parametr název </li></ul></ul><ul><ul><li>Druhý schéma </li></ul></ul>Ondřej Flídr
  16. 16. Prostor pro vás Ondřej Flídr <ul><ul><li>? </li></ul></ul>
  17. 17. Dostupnost slidů a kódu <ul><li>http://blog.snipers-softworks.net </li></ul><ul><ul><li>Včetně doprovodného textu </li></ul></ul><ul><li>http://ewiki.ilikethis.cz </li></ul><ul><ul><li>Sekce o certifikaci ZF </li></ul></ul><ul><ul><li>Kódy, slidy </li></ul></ul>Ondřej Flídr

×