VELKÁ KNIHA
PHP a MySQL 5 KOMPENDIUM ZNALOSTÍ PRO ZAČÁTEČNÍKY I PROFESIONÁLY /přepracované, doplněné a rozšířené vydání publikace z roku 2005/
W. Jason Gilmore
Beginning PHP and MySQL 5: From Novice to Professional, Second Edition Copyright © 2006 by W. Jason Gilmore Original English language published Apress L.P., 2560 Ninth Street, Suite 219, Berkeley, CA 9 47 10 USA. Copyright © 2006 by Apress L.P. CZECH language edition copyright © 2006 by ZONER software, s.r.o. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Apress L.P. Originál v anglickém jazyce vydal Apress L.P., 2560 Ninth Street, Suite 219, Berkeley, CA 9 47 10 USA. Copyright © 2006 Apress L.P. České vydání Copyright © 2006 ZONER software s.r.o.. Všechna práva vyhrazena. Žádná část této publikace nesmí být reprodukována nebo předávána žádnou formou nebo způsobem, elektronicky ani mechanicky, včetně fotokopií, natáčení ani žádnými jinými systémy pro ukládání bez výslovného svolení Apress L.P.
Velká kniha PHP a MySQL 5 kompendium znalostí pro začátečníky i profesionály přepracované, doplněné a rozšířené vydání publikace z roku 2005 Autor: W. Jason Gilmore Copyright © ZONER software, s.r.o. Vydání první v roce 2007. Všechna práva vyhrazena. Zdrojový kód příkladů uvedených v knize je k dispozici na adrese http://www.apress.com v sekci Source Code nebo na adrese http://www.zonerpress.cz v sekci Download. Zoner Press KATALOGOVÉ ČÍSLO: ZR617 ZONER software, s.r.o. Nové sady 18, 602 00 Brno Překlad: RNDr. Jan Pokorný Odpovědný redaktor: Miroslav Kučera, Pavel Kristián Šéfredaktor: Ing. Pavel Kristián DTP: Filip Božoň © Cover foto: Jiří Heller, HELLER.CZ s.r.o., www.heller.cz © Cover a layout: Ing. Pavel Kristián Informace, které jsou v této knize zveřejněny, mohou byt chráněny jako patent. Jména produktů byla uvedena bez záruky jejich volného použití. Při tvorbě textů a vyobrazení bylo sice postupováno s maximální péčí, ale přesto nelze zcela vyloučit možnost výskytu chyb. Vydavatelé a autoři nepřebírají právní odpovědnost ani žádnou jinou záruku za použití chybných údajů a z toho vyplývajících důsledků. Všechna práva vyhrazena. Žádná část této publikace nesmí být reprodukována ani distribuována žádným způsobem ani prostředkem, ani reprodukována v databázi či na jiném záznamovém prostředku či v jiném systému bez výslovného svolení vydavatele s výjimkou zveřejnění krátkých částí textu pro potřeby recenzí. Veškeré dotazy týkající se distribuce směřujte na: Zoner Press ZONER software, s.r.o. Nové sady 18, 602 00 Brno tel.: 532 190 883, fax: 543 257 245 e-mail:
[email protected] http://www.zonerpress.cz
ISBN 80-86815-53-6
Kniha je věnována památce Dr. Giovanni „Nino“ Sanzi (1929-2004). Addio, caro amico.
Stručný obsah Kapitola 1 Kapitola 2 Kapitola 3 Kapitola 4 Kapitola 5 Kapitola 6 Kapitola 7 Kapitola 8 Kapitola 9 Kapitola 10 Kapitola 11 Kapitola 12 Kapitola 13 Kapitola 14 Kapitola 15 Kapitola 16 Kapitola 17 Kapitola 18 Kapitola 19 Kapitola 20 Kapitola 21 Kapitola 22 Kapitola 23 Kapitola 24 Kapitola 25 Kapitola 26 Kapitola 27 Kapitola 28 Kapitola 29 Kapitola 30 Kapitola 31 Kapitola 32 Kapitola 33 Kapitola 34 Kapitola 35 Kapitola 36 Kapitola 37
Úvod do PHP Instalace a konfigurace Apache a PHP Základy PHP Funkce Pole Objektově orientované programování v PHP Vyspělé schopnosti OOP Zpracování chyb a výjimek Řetězce a regulární výrazy Práce se systémem souborů a s operačním systémem PEAR Datum a čas Formuláře a navigační pomůcky Autentizace Upload souborů Networking PHP a LDAP Zpracovatelé sezení Šablony se Smarty Webové služby Bezpečné programování v PHP SQLite Úvod do PDO Úvod do MySQL Instalace a konfigurace MySQL Klienti MySQL Ukládací enginy MySQL a datové typy Zabezpečení MySQL Rozšíření mysql v PHP Rozšíření mysqli v PHP Uložené rutiny Triggery MySQL Pohledy Databázové dotazy v praxi Indexy a vyhledávání Transakce Import a export dat Rejstřík
31 39 69 115 127 153 177 197 211 247 277 289 319 341 359 373 409 431 451 475 515 533 551 569 579 603 625 655 681 709 733 755 767 779 801 817 831 845
Obsah O autorovi O odborném recenzentovi Poděkování
25 25 26
Pošlete nám váš názor Zdrojové soubory Úvod
27 27 29
Kapitola 1
Úvod do PHP
Historie PHP 4 PHP 5
31 31 32 34
Všeobecné rysy jazyka Upotřebitelnost Vyspělost Možnosti
35 35 36 36
Cena Shrnutí
37 37
Kapitola 2
Instalace a konfigurace Apache a PHP
39
Instalace Obstaráme si distribuce Proces instalace Otestování instalace Přizpůsobení vybudované distribuce pro Unix Přizpůsobení vybudované distribuce pro Windows Běžné potíže Prohlížení a stažení dokumentace
39 39 41 46 47 47 48 48
Konfigurace Správa konfiguračních direktiv PHP Konfigurační direktivy PHP Shrnutí
49 49 51 68
Kapitola 3
Základy PHP
Únik k PHP Výchozí syntax Krátké značky Styl <script>
69 69 70 70 71
Obsah
8
Styl ASP Vkládání několika bloků kódu
71 71
Komentáře Syntax jediného řádku z C++ Syntax shellu Komentář na několika řádcích ve stylu C
72 72 72 72
Výstup print() echo() printf() sprintf()
73 73 74 74 75
Typy dat Skalární datové typy Složené datové typy Resource Přetypování Žonglování s typy Funkce vztahující se k typům
76 76 77 79 80 81 82
Identifikátory Proměnné Deklarace proměnné Obor proměnné Superglobální proměnné PHP Proměnné proměnné
83 84 84 85 88 93
Konstanty Výrazy Operandy Operátory
93 94 94 94
Interpretace řetězců Uvozovky Apostrofy heredoc
100 100 101 102
Řídící struktury Příkazy, které řídí vykonávání Podmínkové příkazy Příkazy cyklu Příkazy pro vkládání souborů
102 103 104 106 111
Shrnutí
113
Velká kniha PHP a MySQL 5
Kapitola 4
9
Funkce
115
Volání funkcí Vytvoření funkce Předávání argumentů hodnotou Předávání argumentů odkazem Výchozí hodnoty argumentů Nepovinné argumenty Návratové hodnoty funkcí Vracení více hodnot najednou Vnořování funkcí Rekurzivní funkce Funkce jako proměnná
115 116 116 117 118 118 119 120 120 121 123
Knihovny funkcí Shrnutí
124 125
Kapitola 5
Pole
127
Co je pole? Výstup polí Jak se vytvoří pole Test, zda se jedná o pole
128 129 130 132
Přidávání a odstraňování prvků pole Vyhledávání prvků v poli
133 134
Procházení polí Zjištění velikosti a jedinečných hodnot pole Setřídění prvků polí Kombinace, sloučení, extrakce a porovnání Další užitečné funkce pro práci s poli Shrnutí
136 140 141 146 150 152
Kapitola 6
Objektově orientované programování v PHP
153
Zisky plynoucí z OOP Zapouzdření Dědění Polymorfizmus
154 154 155 155
Klíčové pojmy OOP Třídy Objekty Členské proměnné
156 156 157 157
Obsah
10
Vlastnosti Konstanty Metody
160 163 163
Rada pro typ Konstruktory a destruktory Konstruktory Destruktory
167 168 168 171
Statické členy tříd Klíčové slovo instanceof Pomocné funkce Automatické načítání objektů Shrnutí
172 173 173 175 176
Kapitola 7
Pokročilé schopnosti OOP
177
Schopnosti OOP nepodporované v PHP Klonování objektů Příklad klonování Metoda _ _clone()
178 178 178 180
Dědění Dědění třídy Dědění a konstruktory
181 181 183
Rozhraní Dědění jednoho rozhraní Implementace více rozhraní
185 186 187
Abstraktní třídy Reflexe Shrnutí
188 189 195
Kapitola 8
Zpracování chyb a výjimek
197
Konfigurační direktivy Protokolování chyb Zpracování výjimek Proč je zpracování výjimek prospěšné Implementace zpracování výjimek v PHP
198 201 203 203 205
Shrnutí
209
Kapitola 9
Řetězce a regulární výrazy
Syntaxe se složenými závorkami {}
211 211
Velká kniha PHP a MySQL 5
11
Regulární výrazy Syntax regulárních výrazů ve stylu POSIX Syntax regulárních výrazů ve stylu Perlu
212 213 218
Další funkce pro práci s řetězci Určování délky řetězce Porovnávání dvou řetězců Úpravy velikosti písmen Převádění řetězců do HTML a z HTML Alternativy pro funkce regulárních výrazů Doplňování a zkracování řetězce Počítání znaků a slov
225 226 226 228 229 234 241 242
Využití předností balíku Validate_US PEAR Instalace balíku Validate_US Jak se používá balík Validate_US
244 245 245
Shrnutí
246
Kapitola 10 Práce se systémem souborů a s operačním systémem
247
Soubory a adresáře Analýza cest k adresářům Typy souborů a odkazy Zjišťování velikosti souboru, adresáře a disku Časy posledního přístupu a modifikace
248 248 250 253 256
Vlastnictví souborů a povolení Vstupní a výstupní (I/O) operace se soubory Pojem prostředek Znak pro nový řádek Konec souboru Otevření a uzavření souboru Čtení ze souboru Přesouvání ukazatele souboru Zapisování do souboru Čtení obsahu adresářů
257 259 259 260 260 260 262 267 268 268
Vykonávání příkazů shellu Vykonávání programů na systémové úrovni Shrnutí
270 271 275
Kapitola 11 PEAR Populární balíky PEAR Konverze číselných formátů
277 277 279
Obsah
12
Instalace a aktualizace PEAR Instalace PEAR PEAR a hostitelské firmy Aktualizace PEAR
280 280 282 282
Jak se pracuje s manažerem balíků PEAR Jaké balíky jsou nainstalované Jak získáte další informace o nainstalovaném balíku Instalace balíku Jak se pracuje s balíkem Modernizace balíku Odinstalování balíku Přechod na starší verzi balíku
282 283 283 284 286 287 287 288
Shrnutí
288
Kapitola 12 Datum a čas
289
Časová známka Unixu Knihovna PHP pro datum a čas Bojové umění „Date Fu“ Zobrazení lokalizovaného data a času Zobrazení data poslední modifikace webové stránky Zjištění počtu dní aktuálního měsíce Určení data vzdáleného x dní od aktuálního data Vytvoření kalendáře
289 290 297 297 301 301 302 303
PHP 5.1 Základní informace o Date Konstruktor Date Accessory a mutátory Validátory Manipulační metody
306 307 307 308 311 311
Shrnutí
317
Kapitola 13 Formuláře a navigační pomůcky PHP a webové formuláře Jednoduchý příklad Předávání dat formuláře do funkce Práce s vícehodnotovými komponentami formuláře Generování formulářů s PHP Automatický výběr na formuláři PHP, webové formuláře a JavaScript
319 320 320 321 322 324 326 327
Velká kniha PHP a MySQL 5
13
Navigační pomůcky Uživatelsky přívětivé URL Navigační stopy Vytváření vlastních zpracovatelů chyb
329 329 333 337
Shrnutí
339
Kapitola 14 Autentizace
341
Pojmy autentizace HTTP Autentizace PHP Proměnné autentizace Různé metodologie autentizace Autentizace založená na IP adrese Využití PEAR: Auth_HTTP
341 342 343 344 348 349
Administrace přihlašování uživatelů Ustanovení hesel Testování jak snadno lze uhádnout heslo s knihovnou CrackLib Jednorázové URL a obnova hesla
352 352 354 356
Shrnutí
358
Kapitola 15 Upload souborů
359
Nahrávání souborů přes protokol HTTP Nahrávání na server s PHP Direktivy PHP pro nahrávání souborů a pro prostředky Pole $_FILES Funkce PHP pro nahrávání na server Chybové zprávy týkající se nahrávání Ukázky nahrávání souborů
359 360 360 362 363 364 365
Dejte přednost PEAR: HTTP_Upload Instalace HTTP_Upload Získáme informace o nahraném souboru Přesun nahraného souboru na cílové umístění Nahrávání více souborů najednou
368 368 369 370 370
Shrnutí
371
Kapitola 16 Networking DNS, služby a servery DNS Služby
373 374 374 377
Obsah
14
Zřizování soketových připojení
378
Pošta Konfigurační direktivy Odeslání e-mailu, který obsahuje jen čistý text Odeslání e-mailu s dodatečnými záhlavími Odeslání e-mailu více příjemcům Odeslání e-mailu formátovaného jako HTML Jak se odešle příloha
380 380 381 382 382 383 384
IMAP, POP3 a NNTP Požadavky Zřízení a uzavření připojení Další informace o poštovních přihrádkách a poště Získávání zpráv Sestavení zprávy Odeslání zprávy Administrace poštovní přihrádky Administrace zpráv
385 385 386 388 390 397 398 398 400
Proudy Obaly proudů a kontexty Filtry proudů
400 401 402
Běžné síťové úkoly Zvonění na server Skener portu Konvertor podsítě Testování šířky pásma uživatele
404 404 405 405 407
Shrnutí
408
Kapitola 17 PHP a LDAP
409
Úvod do LDAP Další informace o LDAP
410 411
PHP a LDAP Připojení k serveru LDAP Vázání k serveru LDAP Uzavření připojení k serveru LDAP Získávání dat LDAP Práce s hodnotami položek Počet získaných položek Získávání atributů Řazení a porovnávání položek LDAP
411 411 412 413 414 415 416 417 420
Velká kniha PHP a MySQL 5 Práce s položkami Dealokace paměti Vkládání dat LDAP Aktualizace dat LDAP Odstraňování dat LDAP Konfigurační funkce Znakové sady Práce s distingovaným názvem Zpracování chyb Shrnutí
Kapitola 18 Zpracovatelé sezení
15 421 423 424 425 426 426 428 428 429 430
431
Co je to zpracování sezení? Cookies Přepisování URL Proces zpracování sezení
431 432 432 432
Konfigurační direktivy Klíčové pojmy Startování sezení Likvidace sezení Získávání a nastavování ID sezení Vytváření a odstraňování proměnných sezení Zakódování a dekódování dat sezení
433 438 438 439 439 440 440
Praktické ukázky zpracování sezení Automatizované přihlašování Seznam naposled prohlížených dokumentů
442 442 444
Vytváření vlastních zpracovatelů sezení Včlenění vlastních funkcí sezení do logiky PHP Vlastní zpracovatelé sezení založení na MySQL
445 446 447
Shrnutí
450
Kapitola 19 Šablony se Smarty Co je stroj na šablony? Úvod do Smarty Instalace Smarty Práce se Smarty Prezentační logika Smarty Komentáře
451 452 453 454 456 458 458
Obsah
16
Modifikátory proměnné Řídící struktury Speciální příkazy
458 461 465
Vytváření konfiguračních souborů Odkazy na konfigurační proměnné
468 469
CSS v součinnosti se Smarty Ukládání stránek do cache Doba života stránek uložených v cache Eliminace režijních nákladů na zpracování s is_cached() Vytvoření několika cache pro jednu šablonu Několik slov závěrem k ukládání do cache
470 471 472 472 473 474
Shrnutí
474
Kapitola 20 Webové služby
475
Proč webové služby? Real Simple Syndication Syntax RSS MagpieRSS
476 478 480 481
SimpleXML Funkce SimpleXML Metody SimpleXML
488 489 490
SOAP NuSOAP Rozšíření SOAP PHP 5
493 494 503
Použití klienta C# s webovou službou PHP Shrnutí
512 514
Kapitola 21 Bezpečné programování v PHP
515
Bezpečná konfigurace PHP Bezpečný mód Další konfigurační direktivy vztahující se bezpečnému módu
516 516 518
Skrývání podrobností konfigurace Skrytí Apache a PHP
520 520
Skrývání citlivých dat Dbejte řádně o kořen dokumentů Zamítněte přístup k souborům s určitými příponami
522 522 523
Desinfekce dat uživatele Vymazání souborů
523 524
Velká kniha PHP a MySQL 5 Skriptování přes weby Desinfekce vstupu od uživatele: řešení
17 524 526
Šifrování dat Šifrovací funkce PHP mhash MCrypt
528 528 529 530
Shrnutí
532
Kapitola 22 SQLite
533
SQLite Instalace SQLite Práce v rozhraní příkazového řádku SQLite
533 534 534
Knihovna SQLite PHP Direktivy SQLite Jak se otevře připojení Vytvoření tabulky v paměti Uzavření připojení Dotazy na databázi Analýza sad výsledků Získávání podrobností o sadě výsledků Manipulace s ukazatelem sady výsledků Informace o struktuře tabulky Práce s binárními daty Vytváření a překrývání funkcí SQLite Vytváření agregačních funkcí
536 536 536 537 538 538 539 542 544 545 546 547 548
Shrnutí
549
Kapitola 23 Úvod do PDO Zase další databázová abstraktní vrstva? Jak se pracuje s PDO Instalace PDO Podpora databází v PDO Připojení k databázovému serveru a výběr databáze Získávání a nastavování atributů Zpracování chyb Vykonání dotazu Připravené příkazy Získávání dat Nastavování vázaných sloupců
551 552 553 554 554 555 557 557 558 560 564 567
Obsah
18
Transakce Shrnutí
Kapitola 24 Úvod do MySQL
568 568
569
Proč je MySQL tak populární? Flexibilita Výkon Flexibilní licenční možnosti (Hyper) aktivní komunita uživatelů
569 570 570 572 573
MySQL 4 MySQL 5 Prominentní uživatelé MySQL craigslist Yahoo! Finance Wikipedia
574 575 575 575 576 576
Shrnutí
577
Kapitola 25 Instalace a konfigurace MySQL
579
Licence PHP a MySQL Linux Windows
579 580 580
Stažení MySQL Instalace MySQL Linux Windows
580 582 582 586
Nastavte heslo administrátora MySQL Start a zastavení MySQL Ruční ovládání démona Automatické startování a zastavování MySQL
589 589 589 591
Konfigurace a optimalizace MySQL mysqld_safe Konfigurační a optimalizační parametry Soubor my.cnf
594 594 595 599
Shrnutí
602
Kapitola 26 Klienti MySQL
603
Standardní volby klientů Volby týkající se připojení
603 604
Velká kniha PHP a MySQL 5
19
Všeobecné volby mysql Klíčové volby mysql Práce s mysql v interaktivním režimu Prohlížení konfiguračních proměnných a stavu systému Práce s mysql v dávkovém režimu Užitečné tipy k mysql
605 605 606 608 610 611 612
mysqladmin Příkazy mysqladmin
614 614
Další utility mysqldump mysqlshow mysqlhotcopy mysqlimport myisamchk mysqlcheck
615 615 616 616 617 618 619
Klientské programy jiných výrobců Administrátor MySQL phpMyAdmin Prohlížeč dotazů MySQL Navicat
619 619 621 622 624
Shrnutí
624
Kapitola 27 Ukládací enginy MySQL a datové typy
625
Ukládací enginy InnoDB MyISAM MEMORY MERGE BDB FEDERATED ARCHIVE CSV EXAMPLE BLACKHOLE Časté otázky týkající se ukládacích enginů
625 626 627 629 631 631 631 633 633 634 634 634
Datové typy a atributy Datové typy Datové typy pro datum a čas
636 636 636
Obsah
20
Datové typy pro řetězce Atributy datových typů
640 642
Práce s databázemi a s tabulkami Práce s databázemi Práce s tabulkami Změny ve struktuře tabulky Databáze INFORMATION_SCHEMA
645 645 647 650 650
Shrnutí
653
Kapitola 28 Zabezpečení MySQL
655
Co byste měli udělat nejdřív Zabezpečení démona mysqld Systém přístupových oprávnění MySQL Jak systém přístupových oprávnění funguje Kde jsou informace o přístupových oprávněních uložené?
656 657 657 657 659
Správa uživatelů a přístupových oprávnění Prohlížení oprávnění
668 675
Limity na konzumaci prostředků uživateli Bezpečná připojení MySQL Volby příkazu GRANT, které se týkají bezpečných připojení Volby SSL
675 676 677 678
Shrnutí
680
Kapitola 29 Rozšíření mysql v PHP
681
Předběžné informace Jak se zpřístupní rozšíření mysql na Linuxu Jak se zpřístupní rozšíření mysql na Windows Přístupová oprávnění uživatelů Ukázková data
681 681 682 682 682
Příkazy MySQL v PHP Zřízení a uzavření připojení Uložení informací o připojení do separátního souboru Zabezpečení informací o připojení
683 683 685 685
Volba databáze Dotazy na MySQL Získávání a zobrazování dat Vkládání dat Modifikace dat
686 686 688 691 693
Velká kniha PHP a MySQL 5
21
Odstraňování dat Vybrané řádky a ovlivněné řádky Získávání informací o databázi a tabulce Získávání informací o sloupcích Prohlížení vlastností tabulky Získávání informací o chybách
695 696 697 698 702 703
Pomocné funkce Shrnutí
704 707
Kapitola 30 Rozšíření mysqli v PHP
709
Předběžné informace Jak se zpřístupní rozšíření mysqli na Unixu Jak se zpřístupní rozšíření mysqli na Windows Ukázková data
710 710 710 711
Jak se pracuje s rozšířením mysqli Připojení k serveru MySQL Zprávy o chybách připojení Výběr databáze MySQL Uzavření připojení
711 711 712 715 716
Dotazy Vykonání dotazu Zotavení paměti dotazu Příprava sady výsledků pro zpracování Analýza výsledků Vykonávání několika dotazů za sebou Připravené příkazy
716 716 718 718 720 723 724
Databázové transakce Shrnutí
731 732
Kapitola 31 Uložené rutiny
733
Měli bychom používat uložené rutiny? Přednosti uložených rutin Nevýhody uložených rutin
734 734 734
Jak MySQL implementuje uložené rutiny Tabulky přístupových oprávnění uložených rutin Jak se vytvoří uložená rutina Deklarace a nastavování proměnných Jak se vykoná uložená rutina
735 735 737 739 741
Obsah
22
Uložené rutiny složené z několika příkazů Volání rutiny z jiné rutiny Modifikace uložené rutiny Odstranění uložené rutiny Prohlížení stavu rutiny Prohlížení syntaxe rutiny Podmínky a zpracovatelé
741 748 749 749 750 751 751
Integrace rutin do webových aplikací Vytvoření rozhraní pro bonus zaměstnanců Získávání více řádků
752 752 753
Shrnutí
753
Kapitola 32 Triggery MySQL
755
Úvod do triggerů Proč používat triggery? Vykonání akce před událostí Vykonání akce po události Triggery spouštěné „před“ versus triggery spouštěné „po“
755 756 756 757 758
Podpora triggerů v MySQL Jak se vytvoří trigger Prohlížení existujících triggerů Modifikace triggeru Odstranění triggeru Kaskádové triggery
758 759 761 762 762 763
Integrace triggerů do webových aplikací Shrnutí
764 766
Kapitola 33 Pohledy
767
Úvod do pohledů Podpora pohledů v MySQL Vytváření a vykonávání pohledů Prohlížení informací o pohledu Modifikace pohledu Odstranění pohledu Aktualizace pohledů
768 768 769 774 776 776 776
Začlenění pohledů do webových aplikací Shrnutí
777 778
Velká kniha PHP a MySQL 5
Kapitola 34 Databázové dotazy v praxi
23
779
Ukázková data Vytváření tabulárních výstup s PEAR Instalace HTML_Table Jak se vytvoří jednoduchá tabulka Vytváření lépe čitelného výstupu řádků Vytvoření tabulky z dat databáze Zobecnění výstupního procesu
780 780 781 781 782 784 785
Seřazení výstupu Vytvoření výstupu se stránkováním Číslování stránek výpisu Poddotazy Porovnávací operace s poddotazy Určování existence s poddotazy Údržba databáze pomocí poddotazů Používání poddotazů v PHP
787 788 791 793 794 794 796 796
Kurzory Základy práce s kurzory Vytvoření kurzoru Otevření kurzoru Práce s kurzorem Uzavření kurzoru Jak se kurzor používá s PHP
797 797 798 798 798 799 799
Shrnutí
800
Kapitola 35 Indexy a vyhledávání
801
Indexování databází Primární klíče Jedinečné indexy Normální indexy Fulltextové indexy Doporučené praktiky pro práci s indexy
801 802 803 804 806 810
Vyhledávání pomocí formuláře Jednoduché hledání Rozšíření vyhledávacích možností Fulltextové vyhledávání
811 811 812 814
Shrnutí
815
Obsah
24
Kapitola 36 Transakce
817
Co je transakce? Možnosti MySQL pro transakční zpracování Systémové požadavky Vytvoření tabulky Konfigurační parametry InnoDB
817 818 818 819 819
Ukázkový projekt Ukázková data Vykonáme konkrétní transakci Zálohování a obnova tabulek InnoDB Tipy pro práci s transakcemi
822 822 823 825 825
Budování transakčních aplikací s PHP Směna zboží za hotové ještě jednou
826 826
Shrnutí
830
Kapitola 37 Import a export dat
831
Ukázková tabulka Touha po inteligentním médiu Export dat Příkaz SELECT INTO OUTFILE
831 832 832 833
Import dat Import dat příkazem LOAD DATA INFILE Import dat s mysqlimport Načítání dat do tabulky s PHP
836 836 839 842
Shrnutí
843
Rejstřík
845