Pripojenie k databáze PHP. Prepojenie s databázami MySQL. Vytvorenie databázy. Funkcia CREATE DATABASE

  • 03.11.2019

S php...

Vytváranie databázového pripojenia v PHP rôznymi spôsobmi:

1) starý staromódny spôsob pripojenia k MySQL:

$ conn = mysql_connect ($ db_hostname, $ db_username, $ db_password) alebo zomrieť ("Žiadne pripojenie k serveru");
mysql_select_db ($ db_database, $ conn) alebo die ("Nepodarilo sa pripojiť k databáze");

Vysvetlenia premenných sú uvedené nižšie.

V tomto prípade sa používajú nasledujúce funkcie:

  • mysql_connect ()- pripojiť sa k serveru;
  • mysql_select_db ()- pripojiť sa k databáze;

Zároveň neustále kontrolujeme chyby týmto spôsobom: alebo zomrieť ("Taká chyba"); - preložené ako alebo zomrieť s takou a takou chybou - aby sa okamžite zistilo, kde je chyba.

config.php

// premenné na pripojenie k databáze
$ host = "localhost"; / hostiteľ
$ username = "root"; // heslo pre pripojenie k databáze
$ heslo = ""; // heslo pre pripojenie k databáze - na lokálnom počítači môže byť prázdne.
$ database_name = "my-dolgi"; // názov databázy

// starý spôsob pripojenia k databáze
mysql_connect ($ hostiteľ, $ používateľské meno, $ heslo) alebo zomrieť ("Nedá sa pripojiť na vytvorenie pripojenia");

// vyberte databázu. Ak sa vyskytne chyba, vytlačte
mysql_select_db ($ názov_databázy) alebo zomrieť (mysql_error ());

index.php

require_once "config.php";


$ vysledok = mysql_query ("SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5") or die (mysql_error ());



";


while ($ riadok = mysql_fetch_assoc ($ výsledok)) (
";
}


mysql_free_result ($ výsledok);

// Zatvorte spojenie
mysql_close ();

2) Progresívnejší procedurálny štýl - pripojenie k databáze pomocou mysqli:

Tadiaľto:

  1. pohodlnejšie;
  2. až 40-krát rýchlejšie;
  3. zvýšená bezpečnosť;
  4. existujú nové vlastnosti a funkcie;

Príklad pripojenia k databáze v php s výberom z tabuľky

config.php

// pripojenie k db
$ link = mysqli_connect ("localhost", "username", "password", "name-database"); // tu zadáme vaše priame údaje: užívateľské meno, heslo a názov databázy, prvé pole je zvyčajne localhost

// chyba výstupného pripojenia
ak (! odkaz $) (
echo "Chyba pri pripájaní k databáze. Kód chyby:". mysqli_connect_error ();
východ;
}

Upozorňujeme, že mysqli sa používa všade, nie mysql !!!

index.php

require_once "config.php";

// Vykonať požiadavku. Ak sa vyskytne chyba, vytlačte
if ($ výsledok = mysqli_query($ odkaz,"VYBERTE meno, peniaze OD Dolg ORDER BY Money DESC LIMIT 5")) (

Echo „Koho mám zostúpiť:

";

// Načítavanie výsledkov dotazu
pričom ($ riadok = mysqli_fetch_assoc(výsledok $)) (
echo $ riadok ["Názov"]. „s dlhom“. $ riadok ["Peniaze"]. „ruble.
";
}

// uvoľnenie použitej pamäte
mysqli_free_result(výsledok $);

// Zatvorte spojenie
mysqli_close($ odkaz);
}

Ako vidíte, niektoré body sa zmenili (kurzívou).

3) Objektovo orientovaný spôsob pripojenia k databáze MySQL - pomocou metód a tried:

Nevýhody: Ťažšie a menej náchylné na chyby.

Výhody: stručnosť a pohodlie pre skúsených programátorov.

$ conn = new mysqli ($ db_hostname, $ db_username, $ db_password, $ db_database);
if ($ conn-> connect_errno) (
die ($ conn-> connect_error);
) else (echo „Pripojenie k databáze úspešne nadviazané“;)

tu je v zásade všetko intuitívne jasné:

  • $ db_hostname je hostiteľ(väčšinou localhost),
  • $ db_database - Názov DB;
  • $ db_username a $ db_password sú používateľské meno a heslo!

Príklad pripojenia k databáze v štýle php OOP s výberom z tabuľky

config.php

// pripojenie k db
$ mysqli = new mysqli („localhost“, „username“, „password“, „name-database“); // tu zadáme vaše priame údaje: užívateľské meno, heslo a názov databázy, prvé pole je zvyčajne localhost

// chyba výstupného pripojenia
if ($ mysqli-> connect_error) (
die ("Chyba pri pripájaní k databáze: (. $ mysqli-> connect_errno. ")". mysqli_connect_error);
}

Upozorňujeme, že mysqli sa používa všade, nie mysql !!! a na rozdiel od predchádzajúcej metódy sa zobrazia šípky "->", ktoré označujú, že ide o štýl OOP.

index.php

require_once "config.php";

// Vykonať požiadavku. Ak sa vyskytne chyba, vytlačte
if ($ výsledok = $ mysqli-> dotaz("VYBERTE meno, peniaze OD Dolg ORDER BY Money DESC LIMIT 5")) (

Echo „Koho mám zostúpiť:

";

// Načítavanie výsledkov dotazu
while ($ riadok = $ výsledok-> fetch_assoc()) {
echo $ riadok ["Názov"]. „s dlhom“. $ riadok ["Peniaze"]. „ruble.
";
}

// uvoľnenie použitej pamäte
$výsledok-> zavrieť ();

// Zatvorte spojenie
$mysqli-> zavrieť();
}

Vašou úlohou je nájsť rozdiely.

4) Komunikácia s databázou pomocou CHOP:

Pri pripájaní k databáze MySQL sa používajú pripravené príkazy (metódou Prepare) a vo výsledku je to bezpečnejšie a výrazne zvyšuje výkon.

konfiguračný súbor z predchádzajúcej metódy! - rovnaký

index.php

// Štýl PDO pre komunikáciu MySQL
if ($ stmt = $ mysqli-> pripraviť ("VYBERTE meno, Voney FROM Dolg ORDER BY Money< ? LIMIT 5")) {

$ stmt-> bind_param ("i", $ summa);
$ summa = 100 000;

// spustenie vykonávania
$ stmt-> vykonat ();

// Deklarovanie premenných pre pripravené hodnoty
$ stmt-> bind_result ($ col1, $ col2);

Echo „Koho mám zostúpiť:

";

// Načítavanie výsledkov dotazu
while ($ stmt-> fetch ()) (
echo $ col1. „s dlhom“. $ col2. „ruble.
";
}

// uvoľnenie použitej pamäte
$ stmt-> close ();

// Zatvorte spojenie
$ mysqli-> close ();

Ako vidíte, tu je to oveľa náročnejšie a treba si naštudovať CHOP - toto je samostatná téma.

V tomto článku použijeme príklady na analýzu takých veľmi dôležitých bodov pri práci s databázami MySQL (DB), ako je načítanie z databázy, zápis do databázy, aktualizácia informácií v databáze, ako aj jej vymazanie z databázy. To všetko sa uskutoční pomocou štyroch príkazov SELECT, INSERT, UPDATE a DELETE, o ktorých bude reč v tomto článku.

Ak teda potrebujete vytiahnuť všetky polia z databázy, použite nasledujúci kód.

$ vysledok = mysql_query ("SELECT * FROM first_table", $ db);

Hviezdička znamená, že musíte stiahnuť všetky polia z tabuľky.

Ak potrebujete vytiahnuť len niektoré polia, napríklad meno a priezvisko.

$ vysledok = mysql_query ("SELECT meno, priezvisko FROM first_table", $ db);

meno, priezvisko - polia s menami a priezviskami užívateľov.

Ak potrebujete získať presné údaje, napríklad priezviská všetkých používateľov v databáze s konkrétnym menom (meno bude zadané do premennej $ name).

name = '$ name' - pole name sa rovná premennej $ name.

Okrem jednej podmienky ich môžeme uviesť aj niekoľko, napríklad potrebujete získať identifikátor všetkých používateľov s konkrétnym menom a priezviskom (meno a priezvisko budú zadané do premenných $ meno, resp. $ priezvisko) . Na to môžeme použiť nasledujúci kód.

Ak potrebujeme získať záznamy, pri ktorých je splnená jedna z viacerých podmienok, napríklad získať identifikátory všetkých používateľov, ktorých meno alebo priezvisko sa zhoduje s tými, ktoré sú uvedené v podmienkach.

Ak potrebujete zoradiť výsledok podľa niektorých parametrov, napríklad podľa názvu.

$ vysledok = mysql_query ("SELECT * FROM first_table ORDER BY name", $ db);

ORDER BY name - zoradiť podľa názvu.

Ak potrebujete triediť v opačnom poradí.

$ vysledok = mysql_query ("SELECT * FROM first_table ORDER BY name DESC", $ db);

DESC - v opačnom poradí.

Ak potrebujete z databázy vytiahnuť len určitý počet polí. Napríklad musíte vytiahnuť prvých päť polí.

$ vysledok = mysql_query ("SELECT * FROM first_table ORDER BY id LIMIT 5", $ db);

LIMIT 5 - vytiahnite z databázy iba prvých päť výsledkov.

Boli to malé príklady vzorky z databázy. Teraz sa pozrime na to, ako previesť výsledný výsledok do poľa pre ďalšie použitie, napríklad na zobrazenie výsledku na obrazovke. Na to má PHP špeciálne mysql_fetch_array ().

Výsledok vykonania funkcie môžeme vložiť do premennej, napríklad do premennej $ myrow, ktorá bude uložená v sebe. Ako parameter funkcie mysql_fetch_array () bude odovzdaný výsledok vykonania funkcie mysql_query ()... Všetko to bude vyzerať takto.

$ myrow = mysql_fetch_array (výsledok $);

Teraz máme prístup k prvkom asociatívneho poľa $ myrow. Ako príklad sa pozrime na kód, ktorý zobrazuje používateľské meno s id = 1. Ako databáza sa použije databáza db_first z predchádzajúceho článku.

/ * Pripojenie k databáze * / $ db = mysql_connect ("Server MySQL", "Používateľ databázy", "Heslo pre prístup k databáze"); mysql_select_db ("názov_db", $ db); / * Urobíme dotaz do databázy * / $ výsledok = mysql_query ("SELECT name FROM first_table WHERE id =" $ id "", $ db); / * Previesť výsledok na pole * / $ myrow = mysql_fetch_array ($ výsledok); / * Vytlačte výsledok na obrazovku * / echo $ myrow ["meno"];

Ako vidíte, všetko je veľmi jednoduché a priamočiare.

Teraz prejdime k ďalšiemu príkazu INSERT, ktorý je zodpovedný za pridávanie informácií do databázy.

Pridávanie informácií do databázy. príkaz INSERT

Príkaz INSERT sa používa na pridávanie informácií do databázy. Kód zodpovedný za pridávanie má nasledujúcu syntax.

$ vysledok = mysql_query ("INSERT INTO table (pole 1, pole 2, pole N) VALUES (" value 1 "," value 2 "," value N ")");

Napríklad do prvej_tabuľky musíme pridať meno a priezvisko nového používateľa. Na to môžete použiť nasledujúci kód.

$ vysledok = mysql_query ("INSERT INTO first_table (name, last_name) VALUES (" $ name "," $ last_name ")");

Kde $ name a $ last_name sú premenné s menom a priezviskom nového používateľa.

Môžete použiť na kontrolu výsledku.

$ vysledok = mysql_query ("INSERT INTO first_table (name, last_name) VALUES (" $ name "," $ last_name ")"); if ($ výsledok == "true") (echo "Záznam bol úspešne pridaný!";) else (echo "Záznam nebol pridaný!";)

Inými slovami, ak premenná $ result nadobudne hodnotu true, potom sa zobrazí správa, že záznam bol pridaný. V opačnom prípade to bude vyzerať, že záznam nebol pridaný do databázy.

Aktualizácia informácií v databáze. AKTUALIZOVAŤ vyhlásenie

Príkaz UPDATE sa používa na aktualizáciu existujúcich informácií v databáze. Syntax funkcie mysql_query je v tomto prípade nasledovná.

Teraz prejdime k príkladu. Povedzme, že potrebujeme zmeniť meno a priezvisko používateľa s identifikátorom $ id v tabuľke db_name. Na to môžete použiť nasledujúci kód.

Teraz prejdime k záverečnej časti článku a pozrime sa na posledný príkaz DELETE, ktorý je zodpovedný za vymazanie informácií z databázy.

Odstránenie informácií z databázy. príkaz DELETE

Príkaz DELETE sa používa na vymazanie polí z databázy. Syntax funkcie mysql_query () je v tomto prípade nasledovná.

Teraz, ako obvykle, prejdime na príklad. Povedzme, že potrebujeme vymazať používateľa s $ id z tabuľky db_name. Na to môžete použiť nasledujúci kód.

Týmto sa tento článok uzatvára. Materiál nie je náročný, ale je dosť ťažké ho vysvetliť prostredníctvom textu. Napriek tomu si myslím, že ste pochopili celú pointu vyššie uvedeného materiálu. Ak máte stále nejaké otázky týkajúce sa tohto článku, vždy sa ich môžete opýtať v komentároch.

To je všetko. Veľa šťastia a úspechov pri učení PHP a MySQL.

DBMS MySQL je jednou z mnohých databáz podporovaných PHP. MySQL je zadarmo a dostatočne výkonné na riešenie skutočných problémov.

Rýchly úvod do MySQL

SQL je skratka pre slov Štruktúrovaný Dopytovací Jazyk, čo je skratka pre Structured Query Language. Tento jazyk je štandardným prostriedkom na prístup k rôznym databázam.

Systém MySQL je server, ku ktorému sa môžu pripojiť používatelia na vzdialených počítačoch.

Na prácu s databázami je vhodné použiť nástroj, ktorý je súčasťou Web Developer Kit: Denwer phpMyAdmin. Tu môžete vytvoriť novú databázu, vytvoriť novú tabuľku vo vybranej databáze, vyplniť tabuľku údajmi a pridať, odstrániť a upraviť údaje.

MySQL definuje tri základné typy údajov: číselné, dátum a čas a reťazec. Každá z týchto kategórií je rozdelená do mnohých typov. Hlavné sú:


Každý stĺpec obsahuje po svojom type údajov ďalšie špecifikátory:

TypPopis
NIE JE NULLVšetky riadky tabuľky musia mať v tomto atribúte hodnotu. Ak nie je zadané, pole môže byť prázdne (NULL)
AUTOMATICKÝ PRÍRASTOKŠpeciálna funkcia MySQL, ktorú možno použiť na číselné stĺpce. Ak pri vkladaní riadkov do tabuľky necháte toto pole prázdne, MySQL automaticky vygeneruje jedinečnú hodnotu identifikátora. Táto hodnota bude o jednu väčšia ako maximálna hodnota už v stĺpci. Každá tabuľka môže mať najviac jedno takéto pole. Stĺpce AUTO_INCREMENT musia byť indexované
PRIMÁRNY KĽÚČStĺpec je primárnym kľúčom tabuľky. Údaje v tomto stĺpci musia byť jedinečné. MySQL tento stĺpec automaticky indexuje
NEPOPÍSANÉPo celočíselnom type znamená, že jeho hodnota môže byť kladná alebo nulová
KOMENTÁRNázov stĺpca tabuľky

Vytvorenie novej databázy MySQL VYTVORIŤ DATABÁZU.

VYTVORIŤ DATABÁZU, AK NEEXISTUJE „základna“ SADA ZNAKOV cp1251 COLLATE cp1251_bin

Vytvorenie novej tabuľky vykonávané pomocou príkazu SQL VYTVORIŤ TABUĽKU... Napríklad tabuľka kníh pre kníhkupectvo bude obsahovať päť polí: ISBN, autor, názov, cena a počet kópií:

CREATE TABLE books (ISBN CHAR (13) NOT NULL, PRIMARY KEY (ISBN), autor VARCHAR (30), title VARCHAR (60), price FLOAT (4,2), množstvo TINYINT UNSIGNED); Ak sa chcete vyhnúť chybovému hláseniu, ak tabuľka už existuje, musíte zmeniť prvý riadok pridaním frázy „AK NEEXISTUJE“: CREATE TABLE IF NOT EXISTS books ...

Na tvorenie automatické aktualizácie polí s aktuálnym dátumom typu TIMESTAMP alebo DATETIME použite nasledujúcu konštrukciu:

CREATE TABLE t1 (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

Pridávanieúdaje do tejto tabuľky sa vykonávajú pomocou príkazu SQL VLOŽIŤ... Napríklad:

VLOŽTE DO kníh (ISBN, autor, názov, cena, množstvo) HODNOTY ("5-8459-0184-7", "Zandstra Mat", "Zvládnite PHP4 sami za 24 hodín", "129", "5") ;

Ak chcete získať údaje z tabuľky, použite operátor VYBRAŤ... Získava údaje z databázy výberom riadkov, ktoré zodpovedajú danému kritériu vyhľadávania. Príkaz SELECT sprevádza veľké množstvo možností a prípadov použitia.

* znamená, že všetky polia sú povinné. Napríklad:

VYBERTE * Z kníh;

Ak chcete získať prístup len k určitému poľu, musíte zadať jeho názov v príkaze SELECT. Napríklad:

VYBERTE si autora, názov, cenu FROM kníh;

Ak chcete získať prístup k podmnožine riadkov v tabuľke, musíte zadať kritérium výberu, ktoré nastavuje konštrukciu KDE... Napríklad, ak chcete vybrať dostupné lacné knihy o PHP, vytvorte dotaz:

SELECT * FROM books WHERE price% Zhoduje sa s ľubovoľným počtom znakov, dokonca aj s nulou
_ Zhoduje sa presne s jedným znakom

Ak chcete zobraziť zoznam riadkov získaných na požiadanie v špecifickom poradí, použite konštrukt ZORADIŤ PODĽA... Napríklad:

VYBERTE si * Z kníh OBJEDNAŤ PODĽA ceny;

Predvolené objednať triedenie ide vzostupne. Pomocou kľúčového slova môžete zmeniť poradie zoradenia DESC:

VYBERTE * Z kníh OBJEDNAŤ PODĽA ceny DESC;

Triediť je to možné a na viacerých stĺpcoch. Namiesto názvov stĺpcov môžete použiť ich poradové čísla:

VYBERTE si * Z kníh OBJEDNAŤ DO 4, 2, 3;

Ak chcete zmeniť hodnoty predtým zapísané do tabuľky, musíte použiť príkaz AKTUALIZOVAŤ... Napríklad cena všetkých kníh bola zvýšená o 10%:

AKTUALIZÁCIA SADA kníh cena = cena * 1.1;

Klauzula WHERE obmedzí UPDATE na konkrétne riadky. Napríklad:

AKTUALIZÁCIA SADA kníh cena = cena * 1,05 KDE cena

Ak chcete odstrániť riadky z databázy, použite operátor VYMAZAŤ... Nežiaduce riadky sú špecifikované pomocou klauzuly WHERE. Predávajú sa napríklad niektoré knihy:

VYMAZAŤ Z kníh WHERE množstvo = 0;

Ak chcete vymazať všetky záznamy

TRUNCATE TABLE názov_tabuľky

Ak chcete úplne odstrániť tabuľku, použite:

DROP TABLE názov_tabuľky

Komunikácia PHP s databázou MySQL

Po práci s phpMyAdminom na vytvorení databázy môžete začať pripájať túto databázu k prednému webovému rozhraniu.

Na prístup k databáze z webu pomocou PHP je potrebné vykonať tieto základné kroky:

  • Pripojenie k serveru MySQL.
  • Výber databázy.
  • Vykonanie databázového dotazu:
    • prídavok;
    • vymazanie;
    • zmena;
    • Vyhľadávanie;
    • triedenie.
  • Získanie výsledku žiadosti.
  • Odpojte sa od databázy.

Na pripojenie k databázovému serveru v PHP existuje funkcia mysql_connect ()... Jeho argumenty sú názov počítača, používateľské meno a heslo. Tieto argumenty možno vynechať. V predvolenom nastavení je názov počítača = localhost, potom sa používateľské meno a heslo nevyžadujú. Ak sa PHP používa v spojení so serverom Apache, môžete funkciu použiť mysql_pconnect ()... V tomto prípade spojenie so serverom nezmizne po ukončení programu alebo po zavolaní funkcie. mysql_close ()... Funkcie mysql_connect () a mysql_pconnect () ak je to úspešné, vráťte identifikátor pripojenia. Napríklad:

$ link = mysql_pconnect (); if (! $ link) die ("Nedá sa pripojiť k MySQL");

Po nadviazaní spojenia so serverom MySQL je potrebné vybrať databázu. Ak to chcete urobiť, použite funkciu mysql_select_db ()... Jeho argumentom je názov databázy. Funkcia vráti hodnotu true, ak zadaná databáza existuje a je prístupná. Napríklad:

$ db = "vzorka"; mysql_select_db ($ db) alebo zomrieť ("Nie je možné otvoriť $ db");

Ak chcete pridať, odstrániť, upraviť a vybrať údaje, musíte vytvoriť a spustiť dotaz SQL. Na to má PHP funkciu mysql_query ()... Jeho argumentom je reťazec dopytu. Funkcia vráti ID požiadavky.

Príklad 1

Pridanie záznamu do tabuľky

Pri každom spustení príkladu 1 sa do tabuľky s rovnakými údajmi pridá nový záznam. Samozrejme, má zmysel pridávať do databázy údaje zadané používateľom.

Príklad 2.1 ukazuje HTML formulár na pridávanie nových kníh do databázy.

Príklad 2.1

HTML formulár na pridávanie nových kníh
ISBN
autora
názov
cena
množstvo


Výsledky vyplnenia tohto formulára sa prenesú na insert_book.php.

Príklad 2.2

Program na pridávanie nových kníh (súbor insert_book.php) Vráťte sa späť a dokončite písanie ");) $ isbn = orezanie ($ _POST [" isbn "]); $ autor = orezanie ($ _POST [" autor "]); $ title = orezanie ($ _POST [" názov " ] ); $ isbn = lomítka ($ isbn); $ autor = lomítko ($ autor); $ title = lomítko ($ title); $ db = „vzorka“; $ link = mysql_connect (); ak (! $ odkaz) zomrie ("Nedá sa pripojiť k MySQL"); mysql_select_db ($ db) alebo zomrieť ("Nie je možné otvoriť $ db"); $ query = "VLOŽIŤ DO HODNOT kníh (" ". $ isbn." "," ". $ autor . "", "". $ title. "", "" .floatval ($ _ POST ["cena"]). "", "" .intval ($ _ POST ["množstvo"]). "") " ; $ result = mysql_query ($ dotaz); if ($ výsledok) echo "Kniha bola pridaná do databázy."; mysql_close ($ link);?>

V príklade 2.2 sú zadané reťazcové dáta spracované funkciou lomítka ()... Táto funkcia pridáva spätné lomky pred jednoduché úvodzovky ("), dvojité úvodzovky ("), spätné lomky (\) a nulové bajty. Faktom je, že podľa požiadaviek systaxe databázových dopytov musia byť takéto znaky uvedené v úvodzovkách.

Na určenie počtu záznamov vo výsledku dotazu použite funkciu mysql_num_rows ().

Všetky záznamy o výsledku dotazu je možné prezerať v slučke. Pred tým pomocou funkcie mysql_fetch_ pre každý záznam sa získa asociatívne pole.

Príklad 3.1 poskytuje HTML formulár na vyhľadávanie konkrétnych kníh v databáze.

Príklad 3.1

HTML formulár na vyhľadávanie kníh
Hľadať podľa:

Čo hľadáme:



Výsledky vyplnenia tohto formulára sa odošlú na adresu search_book.php.

Príklad 3.2

Vráťte sa prosím späť a dokončite písanie "); $ hľadaný výraz = lomítka ($ hľadaný výraz); $ link = mysql_pconnect (); if (! $ Link) zomrie ("Nedá sa pripojiť k MySQL "); $ db =" ukážka "; mysql_select_db ($ db) alebo zomrieť ("Nie je možné otvoriť $ db"); $ query = "VYBERTE * Z kníh WHERE". $ _ POST ["searchtype"]. " ako "%". $ hľadaný výraz. "%" "; $ result = mysql_query ($ dotaz); $ n = mysql_num_rows ($ výsledok); pre ($ i = 0; $ i<$n; $i++) { $row = mysql_fetch_array($result); echo "

". ($ i + 1). $ riadok [" názov "]."



";) if ($ n == 0) echo" Nemôžem nič navrhnúť. Prepáčte "; mysql_close (odkaz $);?>

Alternatívna možnosť

Program na vyhľadávanie kníh (súbor search_book.php) Vráťte sa prosím späť a dokončite písanie "); $ searchterm = addlashes ($ searchterm); mysql_connect () alebo zomrieť (" Nedá sa pripojiť k MySQL "); mysql_select_db (" ukážka ") alebo zomrieť (" Nie je možné otvoriť databázu "); $ result = mysql_query ("SELECT * FROM books WHERE". $ _ POST ["searchtype"]. "like"% ". $ searchterm."% ""); $ i = 1; while ($ row = mysql_fetch_array ($ výsledok) ) (echo "

". ($ i ++). $ riadok [" názov "]."
"; echo" Autor: ". $ riadok [" autor "]."
"; echo" ISBN: ". $ riadok [" ISBN "]."
"; echo" Cena: ". $ riadok [" cena "]."
"; echo" Množstvo: ". $ riadok [" množstvo "]."

";) if ($ i == 1) echo" Nemáme čo ponúknuť. Prepáčte "; mysql_close ();?>

Ako teda funguje architektúra webovej databázy:

  1. Webový prehliadač používateľa odošle požiadavku HTTP na konkrétnu webovú stránku. Používateľ napríklad hľadá všetky knihy PHP pomocou formulára HTML. Stránka spracovania formulára má názov search_book.php.
  2. Webový server prijme požiadavku na search_book.php, získa súbor a odovzdá ho PHP nástroju na spracovanie.
  3. PHP sa pripojí k serveru MySQL a odošle požiadavku.
  4. Server prijme požiadavku na databázu, spracuje ju a pošle výsledok (zoznam kníh) späť do PHP motora.
  5. PHP engine ukončí vykonávanie skriptu, naformátuje výsledok požiadavky do HTML. Výsledok HTML sa potom vráti na webový server.
  6. Webový server odošle HTML do prehliadača a používateľ si môže zobraziť požadovaný zoznam kníh.

Použitie transakčného mechanizmu

Použitie transakčného mechanizmu ako príkladu prevodu peňazí z jednej osoby na druhú

If (mysql_query ("BEGIN") && mysql_query ("AKTUALIZOVAŤ SADA peňazí amt = amt - 6 WHERE name =" Eva "") && mysql_query ("AKTUALIZOVAŤ SADA peňazí amt = amt + 6 WHERE meno =" Ida "") && mysql_query ("COMMIT")) (echo "Úspech";) else (mysql_query ("ROLLBACK"); echo "Neúspešné";)

VYBERTE... PRE AKTUALIZÁCIU

Ak spustíte niekoľko procesov, ktoré vytvárajú výberový dotaz v tej istej tabuľke, potom môžu vybrať rovnaký záznam v rovnakom čase.

Aby sa predišlo vyššie uvedenej situácii, je potrebné vykonať nielen dotaz SELECT, ale aj jeho rozšírenú verziu, o ktorej veľa ľudí ani netuší: SELECT… FOR UPDATE.

Pri vykonávaní tohto dotazu budú teda všetky dotknuté záznamy v databáze uzamknuté až do konca relácie s databázou alebo do aktualizácie údajov záznamov. Iný skript nebude môcť vybrať uzamknuté záznamy, kým nebude splnená jedna z vyššie uvedených podmienok.

Nie všetko je však také jednoduché. Existuje niekoľko ďalších podmienok, ktoré musíte splniť. Po prvé, vaša tabuľka musí byť zostavená na základe architektúry InnoDB. V opačnom prípade blokovanie jednoducho nebude fungovať. Po druhé, pred vykonaním výberu musíte vypnúť automatické potvrdenie žiadosti. Tie. inými slovami, automatické vykonávanie dotazu. Po zadaní dotazu UPDATE sa budete musieť znova odvolať na databázu a potvrdiť zmeny pomocou príkazu COMMIT:

Spravil som si pre seba jednoduchú databázu udalostí v PHP s pripomienkou na e-mail. Je celkom vhodný ako príklad na prácu v PHP s databázou.

Ako databázu samozrejme MySQL.

Znaky je možné vytvárať manuálne cez phpMyAdmin, ako je popísané v príklade vytvorenia ankety v PHP tu, ale tu vytvorím tabuľky pomocou dotazov.

Súbor na vytváranie tabuliek create.php (spustite ho 1x, po vytvorení tabuliek ho odstráňte).

Registračný formulár užívateľa add.php

Email:

heslo:



Zadajte užívateľské meno a heslo add1.php do databázy

Vstúpiť

Zaregistrovali ste sa.

Teraz zadajte prihlasovacie meno a heslo formulár login.php

Pripomienka udalosti PHP

Email:

heslo:

registrácia

Zabudol si heslo

Po zadaní správneho loginu a hesla zobrazíme zoznam udalostí see.php

Pripomienka udalosti PHP
";) else (echo" Záznamy používateľa ". $ meno."

"; / * Tabuľka MySQL, ktorá ukladá údaje * / $ userstable =" sobbit "; / * vytvoriť pripojenie * / mysql_connect ($ hostname, $ username, $ password) ALEBO DIE ("Nedá sa vytvoriť pripojenie ") ; / * vyberte databázu. Ak sa vyskytne chyba, zobrazte ju * / mysql_select_db ($ dbName) alebo zomriete (mysql_error ()); $ query = "SELECT * FROM $ usertable WHERE usver =" ". $ name." "" ; $ res = mysql_query ($ dotaz) alebo zomrieť (mysql_error ()); / * získať riadky z databázy MySQL * / while ($ row = mysql_fetch_array ($ res)) (echo $ riadok ["sobit"]. "". $ riadok [ "opsobit"]. "". $ riadok ["kogda"]; / * Nakreslite štítok s údajmi a tlačidlom na úpravu záznamov * / echo "

"; echo" "; echo" "; echo" "; echo" "; echo" "; echo"
"; echo"
";) / * Nakreslite formulár na zadanie novej udalosti * / echo"

Udalosť:

"; echo" Popis udalosti:

Kedy sa stane:
"; echo"

"; echo"

"; echo"

";) / * Zatvorte pripojenie * / mysql_close ();?>

Pod štítkom udalosti je formulár na zadanie novej udalosti a tlačidlo Pridať, po kliknutí naň sa otvorí seeadd.php, udalosť sa pridá a opäť sa zobrazí štítok s novou udalosťou a vstupný formulár. Aby sa všetko zaznamenalo správne, treba si dať pozor na formát dátumu a kódovanie.

Pripomienka udalosti PHP
";) else (/ * Tabuľka MySQL, v ktorej sú uložené údaje * / $ userstable =" count1 "; / * vytvorenie pripojenia * / mysql_connect ($ hostname, $ username, $ password) OR DIE (" Nie je možné vytvoriť connection ") ; / * vyberte databázu. Ak sa vyskytne chyba, zobrazte ju * / mysql_select_db ($ dbName) alebo zomriete (mysql_error ()); $ name = mysql_real_escape_string ($ name); $ asobit = mysql_real_escape_string ($ asobit); $ a_sobit = mysql_string ($ aopsobit); $ akogda = mysql_real_escape_string ($ akgda); $ query = "SELECT * FROM $ usertable"; $ res1 = mysql_query ($ dotaz); while ($ row = mysql_fetch_row ($ res1)) $ nn = $ riadok +1; $ dotaz = "UPDATE $ usertable SET nn = $ nn"; mysql_query ($ dotaz) alebo zomrieť (mysql_error ()); / * MySQL tabuľka, ktorá ukladá dáta * / $ userstable = "sobbit"; / * vytvorte pripojenie * / mysql_connect ($ názov hostiteľa, $ používateľské meno, $ heslo) ALEBO ZMIERTE ("Nemôžem vytvoriť pripojenie"); / * vyberte databázu. Ak sa vyskytne chyba, zobrazte ju * / mysql_select_db ($ dbName) alebo zomrieť (mysql_error ( )); / * vytvorte požiadavku pre vloženie informácie o udalosti do tabuľky * / $ dotaz = "INSERT INTO $ usertable VALUES (" $ nn "," $ name "," $ asobit "," $ aopsobit "," $ akogda ")"; / * Vykonať požiadavku. Ak sa vyskytne chyba, zobrazte ju. * / mysql_query ($ dotaz) alebo zomrieť (mysql_error ()); echo "Informácie o udalosti boli vložené do databázy."; ?>


"; / * vytvorte pripojenie * / mysql_connect ($ hostname, $ username, $ password) OR DIE (" Nemôžem vytvoriť pripojenie "); / * vyberte databázu. Ak sa vyskytne chyba, zobrazte ju * / mysql_select_db ($ dbName) alebo zomrieť (mysql_error ()); $ query = "SELECT * FROM $ usertable WHERE usver =" ". $ name." ""; $ res = mysql_query ($ dotaz) alebo zomrieť (mysql_error ()); zatiaľ čo ( $ row = mysql_fetch_array ($ res)) (echo $ riadok ["sobit"]. "". $ riadok ["opsobit"]. "". $ riadok ["kogda"]; echo "

"; echo" "; echo" "; echo" "; echo" "; echo" "; echo"
"; echo"
";) echo"

Udalosť:

"; echo" Popis udalosti:

Kedy sa stane:
"; echo"

"; echo"

";) / * Zatvorte pripojenie * / mysql_close ();?>

V platni máme tlačidlo Zmeniť otvorí sa zmena.php s formulárom na zmenu predtým zadaného záznamu.

Pripomienka udalosti PHP
";) inak (echo"

"; echo"

"; echo"

"; echo"

"; echo" "; echo" "; echo"

Pripomienka udalosti PHP
";) else (/ * Tabuľka MySQL, v ktorej sa ukladajú údaje * / / * vytvorte pripojenie * / mysql_connect ($ názov hostiteľa, $ používateľské meno, $ heslo) ALEBO ZMIERTE ("Nedá sa vytvoriť pripojenie "); / * vyberte databáza. Ak sa vyskytne chyba, vytlačte ju * / mysql_select_db ($ dbName) alebo zomriete (mysql_error ()); $ name = mysql_real_escape_string ($ name); $ asobit = mysql_real_escape_string ($ asobit); $ aopsobit = mysql_streal_escape ($ asobit = mysql_streal_escape) = mysql_real_escape_string ($ akogda); / * MySQL tabuľka, kde sú uložené údaje * / $ userstable = "sobbit"; / * vytvorenie pripojenia * / mysql_connect ($ hostname, $ username, $ password) ALEBO DIE ("Can' t vytvoriť pripojenie "); / * vyberte databázu. Ak sa vyskytne chyba, zobrazte ju * / mysql_select_db ($ dbName) alebo zomriete (mysql_error ()); / * vytvorte dotaz na zmenu informácií v tabuľke * / $ dotaz = " AKTUALIZÁCIA $ usertable SET sobit = "". $ asobit. "", opsobit = "". $ aopsobit. "", kogda = "". $ akgda. "" WHERE nn = $ ann "; / * Spustite dotaz. Ak sa vyskytne chyba, zobrazte ju. * / mysql_query ($ dotaz ) alebo zomrieť (mysql_error ()); echo "Informácie o udalosti zmenené."; ?>


"; / * vytvorte pripojenie * / mysql_connect ($ hostname, $ username, $ password) OR DIE (" Nemôžem vytvoriť pripojenie "); / * vyberte databázu. Ak sa vyskytne chyba, zobrazte ju * / mysql_select_db ($ dbName) alebo zomrieť (mysql_error ()); $ query = "SELECT * FROM $ usertable WHERE usver =" ". $ name." ""; // $ dotaz = "SELECT * FROM $ usertable"; $ res = mysql_query ( $ query) alebo zomrieť (mysql_error ()); zatiaľ čo ($ row = mysql_fetch_array ($ res)) (echo $ row ["sobit"]. "". $ row ["opsobit"]. "". $ row [" kogda"] ; echo " "; echo" "; echo" "; echo" "; echo" "; echo" "; echo"

"; echo"
";) echo"

Udalosť:

"; echo" Popis udalosti:
"; echo"

Kedy sa stalo:

"; echo"

";) / * Zatvorte pripojenie * / mysql_close ();?>

Opäť sa zobrazí štítok so zmenenou udalosťou a vstupný formulár.
Súbor prover.php, ktorý je vložený do cronu, včas skontroluje databázu, či sa v databáze nenachádzajú expirované udalosti, ak ho nájde, pošle užívateľovi upomienku na e-mail.

Pripomienka udalosti PHP ". $ riadok [" kogda "]."
Pozor!
Tento email bol odoslaný robota a nemusíš na to odpovedať!"; $ hlavičky =" Od: ". $ riadok [" usver "]."<".$row["usver"].">\ r \ nTyp obsahu: text / html; charset = windows-1251 \ r \ n "; mail ($ komu, $ predmet, $ správa, $ hlavičky);) else ()) / * Zatvoriť pripojenie * / mysql_close ();?>

A nakoniec formulár, ktorý používateľovi odošle zabudnuté heslo na e-mail.
Prihlasovací formulár na pripomenutie zabudnutého hesla, súbor forgot.php.

Pripomienka / názov udalosti PHP> <meta https-equiv=”Content-Type” content=”text/html; charset=windows-1251?> <body> <P> <center> <TABLE WIDTH = 400><TR><TD align = right> <FORM ACTION="forgot1.php" METHOD="POST">Email: <BR> <INPUT TYPE="text" NAME="name" SIZE="30" MAXLENGTH="240"> <P> <INPUT TYPE="submit" VALUE="Odoslať"> </FORM> </TD></TR></TABLE></CENTER> </center> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p><p>Po kliknutí na tlačidlo „Odoslať“ sa spustí súbor forgot1.php, ktorý pošle heslo na e-mail používateľa.</p><p> <html> <head> <title>Pripomienka udalosti PHP
";) else ($ to = $ riadok [" meno "]; $ predmet =" Obnovenie hesla pre ". $ riadok [" meno "]; $ message =" Prihlásenie: ". $ riadok [" meno "]."
heslo:". $ riadok [" adresa "]; $ hlavičky =" Od: ". $ riadok [" názov "]."<".$row["name"].">\ r \ nTyp obsahu: text / html; charset = windows-1251 \ r \ n "; mail ($ komu, $ predmet, $ správa, $ hlavičky); echo" Informácie boli odoslané na zadanú adresu. ";) / * Zatvoriť spojenie * / mysql_close (); ?> Prihlásiť sa

Výsledkom je taká jednoduchá databáza udalostí s funkciou oznamovania udalostí na e-mail užívateľa:

Okrem toho je možné zoznam udalostí usporiadať vo forme tabuľky, do tabuľky môžete pridať aj tlačidlo „Vymazať“ na vymazanie riadkov, umožniť „zatvorenie“ udalostí kliknutím na odkaz okamžite v pripomenutom liste , zašifrujte heslo, ktoré sa prenáša cez panel s adresou ...

A tak môžete vyššie uvedené časti kódu vložiť do šablón stránky, aby bola krásna, nahrať ju na stránku a bude vám online pripomínať udalosti e-mailom.

Prostriedky efektívneho ukladania a získavania veľkého množstva informácií výrazne prispeli k úspešnému rozvoju internetu. Na ukladanie informácií sa zvyčajne používajú databázy. Známe stránky ako Yahoo, Amazon a Ebay do veľkej miery závisia od spoľahlivosti databáz, ktoré uchovávajú obrovské množstvo informácií. Samozrejme, podpora databáz nie je zameraná len na gigantické korporácie – weboví programátori majú k dispozícii niekoľko výkonných databázových implementácií, ktoré sú distribuované za relatívne nízke náklady (ak nie zadarmo).

Správna organizácia databázy poskytuje rýchlejšie a flexibilnejšie možnosti získavania údajov. Výrazne zjednodušuje implementáciu vyhľadávacích a triediacich nástrojov a problémy s prístupom k informáciám sa riešia pomocou kontroly nad privilégiami, ktoré sú prítomné v mnohých systémoch správy databáz (DBMS). Okrem toho sa zjednodušujú procesy replikácie a archivácie údajov.

Kapitola začína podrobným popisom získavania a aktualizácie údajov v MySQL – pravdepodobne najpopulárnejšom systéme správy databáz používanom v PHP (http://www.mysql.com). Na príklade MySQL sa ukáže, ako PHP načítava a aktualizuje dáta v databáze; pokryjeme základné nástroje vyhľadávania a triedenia používané v mnohých webových aplikáciách. Potom prejdeme k podpore PHP pre Open Data Base Connectivity (ODBC), všeobecné rozhranie, ktoré možno použiť na pripojenie k viacerým DBMS súčasne. Podporu ODBC v PHP predvedieme na príklade pripojenia a načítania údajov z databázy Microsoft Access. Kapitolu uzatvára projekt, ktorý využíva PHP a MySQL na vytvorenie hierarchického adresára s informáciami o vybraných stránkach. Keď sú do katalógu pridané nové lokality, používateľ ich priradí do jednej zo štandardných kategórií definovaných správcom lokality.

Predtým, ako prejdem k diskusii o MySQL, chcem povedať pár slov o SQL, najrozšírenejšom jazyku na prácu s databázami. Jazyk SQL je základom takmer všetkých existujúcich DBMS. Ak chcete prejsť k zvažovaniu príkladov práce s databázami, musíte mať aspoň všeobecnú predstavu o tom, ako funguje SQL.

Čo je SQL?

SQL sa zvyčajne popisuje ako štandardný jazyk používaný na interakciu s relačnými databázami (pozri nižšie). SQL však nie je programovací jazyk ako C, C++ alebo PHP. Ide skôr o front-end nástroj na vykonávanie rôznych databázových operácií, ktorý používateľovi poskytuje štandardnú sadu príkazov. Schopnosti SQL nie sú obmedzené na získavanie údajov z databázy. SQL podporuje rôzne možnosti interakcie s databázou, vrátane:

  • definícia dátovej štruktúry
- definícia štruktúr používaných pri ukladaní údajov;
  • vzorkovanie údajov
  • - načítanie údajov z databázy a ich prezentácia vo formáte vhodnom pre výstup;
  • spracovanie dát
  • - vkladanie, aktualizácia a mazanie informácií;
  • Riadenie prístupu
  • - možnosť povoliť / zakázať výber, vkladanie, aktualizáciu a mazanie údajov na úrovni jednotlivých používateľov;
  • kontrola integrity údajov
  • - zachovanie dátovej štruktúry v prípade problémov, ako sú paralelné aktualizácie alebo pády systému.

    Upozorňujeme, že definícia SQL hovorí, že tento jazyk je navrhnutý tak, aby s ním pracoval vzťahový databázy. V systéme správy relačných databáz sú údaje organizované ako množina vzájomne prepojených tabuliek. Vzťahy medzi tabuľkami sú realizované formou odkazov na údaje z iných tabuliek. Tabuľka Predstavte si to ako dvojrozmerné pole, v ktorom je umiestnenie každého prvku charakterizované špecifickými hodnotami riadkov a stĺpcov. Príklad relačnej databázy je na obr. 11.1.

    Ryža. 11.1. Príklad relačnej databázy

    Ako je vidieť z obr. 11.1 sa každá tabuľka skladá z riadkov (záznamov) a stĺpcov (polí). Každé pole má priradený jedinečný (v rámci tejto tabuľky) názov. Všimnite si vzťah medzi zákazníkmi a tabuľkami objednávok, označený šípkou. V informáciách o objednávke je zahrnutý krátky identifikátor zákazníka, ktorý zabraňuje zbytočnému ukladaniu mena zákazníka a ďalších podrobností. V zobrazenej databáze existuje ďalší vzťah medzi tabuľkami objednávok a produktov. Toto prepojenie je vytvorené poľom prod_id, v ktorom je uložený identifikátor produktu objednaného týmto zákazníkom (definovaný poľom custjd). Prítomnosť týchto odkazov uľahčuje odkazovanie na úplné údaje o zákazníkoch a produktoch pomocou jednoduchých identifikátorov. Správne organizovaná databáza sa stáva výkonným nástrojom na organizáciu a efektívne ukladanie údajov s minimálnou redundanciou. Zapamätajte si túto databázu, budem na ňu často odkazovať v ďalších príkladoch.

    Ako sa teda vykonávajú operácie s relačnými databázami? Na tento účel má SQL špeciálnu sadu bežných príkazov, ako sú SELECT, INSERT, UPDATE a DELETE. Napríklad, ak potrebujete získať e-mailovú adresu zákazníka s ID 2001cu (pozri obrázok 11.1), stačí spustiť nasledujúci príkaz SQL:

    SELECT cust_email FROM customers WHERE custjd = "2001cu"

    Všetko je celkom logické, nie? Vo všeobecnosti príkaz vyzerá takto:

    SELECT názov_poľa FROM názov_tabulky [podmienka WHERE]

    Hranaté zátvorky označujú, že koncová časť príkazu je voliteľná. Ak chcete napríklad získať e-mailové adresy všetkých zákazníkov z tabuľky zákazníkov, jednoducho spustite nasledujúci dotaz:

    SELECT cust_email FROM zákazníkov

    Povedzme, že chcete zahrnúť nový záznam do tabuľky produktov. Najjednoduchší príkaz vloženia vyzerá takto:

    INSERT in products VALUES ("1009pr", "Červené paradajky", "1.43");

    Ak budete neskôr potrebovať tieto údaje vymazať, použite nasledujúci príkaz:

    DELETE FROM products WHERE prod_id = 1009r ";

    Existuje mnoho variantov príkazov SQL a ich úplný popis presahuje rámec tejto knihy. Na túto tému je celkom možné napísať samostatnú knihu! Snažil som sa, aby príkazy SQL použité v príkladoch boli relatívne jednoduché, ale dostatočne reálne. Na webe je veľa SQL tutoriálov a zdrojov. Niektoré odkazy sú uvedené na konci tejto časti.

    Príkazy SQL nie je potrebné písať veľkými písmenami. Uprednostňujem však tento zápis, pretože pomáha rozlíšiť komponenty požiadavky.

    Pri čítaní tejto knihy sa pravdepodobne pýtate, ako organizovať prácu s databázami na webe? Spravidla najskôr s pomocou niektorých

    alebo jazyk rozhrania (PHP, Java alebo Perl), vytvorí sa spojenie s databázou, po ktorom program pristupuje k databáze s dopytmi pomocou štandardnej sady nástrojov. Front-end jazyk možno považovať za lepidlo, ktoré spája databázu s webom. Prechádzam na môj obľúbený front-end jazyk PHP.

    Dodatočné zdroje

    Niektoré zo zdrojov SQL na internete sú uvedené nižšie. Sú užitočné pre začiatočníkov aj skúsených programátorov.

    • SQL tutoriály: http://perl.about.com/compute/perl/cs/beginningsql/index.htm.
    • SQLCourse.com (so vzorovou databázou): http://www.sqlcourse.com.
    • SQL pre Web Geeks: http://www.arsdigita.com/books/sql.
    • Úvod do SQL (aplikované na MySQL): http://www.devshed.com/Server_side/MySQL/Intro.

    Podpora databázy PHP

    Ak by som mal pomenovať najdôležitejší aspekt PHP, asi by som sa zameral na podporu databáz. PHP má rozsiahlu podporu pre takmer všetky existujúce databázové servery, vrátane:

    PostgreSQL
    Pevné
    Sybase
    UNIX dbm

    File-Pro (iba na čítanie)

    Velods

    Oracle (OCI7 a OC18)

    Ako ukazuje tento zoznam, podpora databáz PHP siaha od kompatibility s databázami, ktoré každý pozná (ako Oracle), až po tie, o ktorých mnohí nikdy ani nepočuli. Morálka - ak sa chystáte použiť seriózny DBMS na ukladanie informácií distribuovaných cez web, s najväčšou pravdepodobnosťou je táto databáza podporovaná v PHP. Podpora databázy v PHP je reprezentovaná súborom štandardných funkcií pre pripojenie k databáze, spracovanie požiadaviek a prerušenie spojenia.

    Podrobný popis všetkých podporovaných databáz je jednoznačne mimo rámca tejto knihy. MySQL Server však poskytuje celkom dobrú predstavu o všeobecných možnostiach podpory databáz PHP. Z tohto dôvodu budú príklady vo zvyšku tejto a všetkých ostatných kapitol tejto knihy používať syntax MySQL. Bez ohľadu na to, s ktorým databázovým serverom pracujete, je prispôsobenie príkladov jednoduché.

    Inštalácia

    Jedným z dôvodov popularity MySQL medzi používateľmi PHP je, že podpora pre tento server je automaticky súčasťou PHP. Stačí sa teda uistiť, že je správne nainštalovaný balík MySQL MySQL je kompatibilný s takmer akýmkoľvek hlavným operačným systémom vrátane FreeBSD, Solaris, UNIX, Linux a rôznymi verziami Windows. Hoci je licenčná politika MySQL flexibilnejšia ako iné databázové servery, dôrazne vám odporúčam, aby ste si prečítali licenčné informácie zverejnené na webovej stránke MySQL (http://www.mysql.com).

    Najnovšiu verziu MySQL je možné prevziať z ľubovoľnej zrkadlovej lokality. Úplný zoznam zrkadlových stránok nájdete na http://www.mysql.com/downloads/ mirrors.html. V čase písania tohto článku je najnovšia stabilná verzia MySQL 3.22.32 a 3.32 je v beta testovaní. Samozrejme, vždy by ste si mali nainštalovať najnovšiu stabilnú verziu, je to vo vašom najlepšom záujme. Navštívte najbližšiu zrkadlovú stránku a stiahnite si verziu, ktorá zodpovedá vášmu operačnému systému. V hornej časti stránky sú odkazy na nové verzie pre rôzne platformy. Nezabudnite si prečítať celú stránku, pretože končí odkazmi na konkrétny operačný systém.

    Vývojový tím MySQL pripravil podrobnú dokumentáciu popisujúcu proces inštalácie. Odporúčam vám, aby ste si pozorne preštudovali všetky všeobecné aspekty inštalácie, neobmedzovali sa len na informácie súvisiace priamo s vaším operačným systémom.

    Nastavenie MySQL

    Po úspešnej inštalácii je potrebné nakonfigurovať server MySQL. Proces prispôsobenia pozostáva najmä z vytvárania nových databáz a úprav tabuľky privilégiá MySQL. Tabuľky privilégií riadia prístup k databázam MySQL. Správne nastavenie tabuľky je mimoriadne dôležité pre bezpečnosť vašich databáz, takže pred spustením vašej lokality online musíte plne porozumieť systému práv.

    Tabuľky grantov MySQL vyzerajú na prvý pohľad skľučujúco, ale keď im správne porozumiete, údržba bude veľmi jednoduchá. Úplný popis tabuliek privilégií presahuje rámec tejto knihy. Na webe je však veľa zdrojov, ktoré sú určené na pomoc začínajúcim používateľom MySQL. Ďalšie informácie nájdete na webovej lokalite MySQL (http://www.mysql.com).

    Po úspešnej inštalácii a konfigurácii balíka MySQL môžete začať experimentovať s databázami na webe! Tejto téme je venovaná ďalšia časť. Začnime tým, že sa pozrieme na podporu PHP MySQL.

    Štandardné funkcie PHP pre prácu s MySQL

    Takže ste úspešne vytvorili a otestovali všetky požadované povolenia; všetko je pripravené na prácu so serverom MySQL. V tejto časti predstavím štandardné funkcie PHP, ktoré môžete použiť na jednoduchú interakciu s PHP skriptami so serverom MySQL. Všeobecná postupnosť akcií pri interakcii so serverom MySQL vyzerá takto:

    1. Vytvorte pripojenie k serveru MySQL. Ak pokus zlyhá, zobrazte príslušnú správu a ukončite proces.
    2. Vyberte databázu servera MySQL. Ak pokus o výber zlyhá, zobrazte príslušnú správu a ukončite proces. Na spracovanie požiadaviek je povolené otvárať niekoľko databáz súčasne.
    3. Spracovať požiadavky na vybranú databázu (alebo databázy).
    4. Po spracovaní požiadaviek zatvorte pripojenie k databázovému serveru.

    Príklady v tejto časti používajú tabuľky produktov, zákazníkov a objednávok (pozri obrázok 11.1). Ak si chcete všetky príklady skontrolovať sami, vytvorte si tieto tabuľky alebo skopírujte stranu s popisom štruktúry, aby ste nemuseli neustále listovať knihou.

    Začnime teda od úplného začiatku – teda pripojením k serveru MySQL.

    Funkcia mysql_connect () nadviaže spojenie s MySQL serverom.Po úspešnom pripojení k MySQL môžete pristúpiť k výberu databáz obsluhovaných týmto serverom. Syntax funkcie mysql_connect () je:

    int mysql_connect ([: / cesta // k / soketu] [, používateľské meno reťazca] [, heslo reťazca])

    Parameter hostiteľa je názov hostiteľského počítača špecifikovaný v tabuľkách privilégií servera MySQL. Samozrejme sa používa aj na presmerovanie požiadaviek na webový server, na ktorom beží MySQL, keďže sa k serveru MySQL môžete pripojiť vzdialene. Spolu s názvom hostiteľa je možné zadať voliteľné parametre - číslo portu, ako aj cestu k soketu (pre lokálneho hostiteľa). Parametre používateľského mena a hesla sa musia zhodovať s používateľským menom a heslom špecifikovaným v tabuľkách privilégií MySQL. Upozorňujeme, že všetky parametre sú voliteľné, pretože tabuľky práv možno nakonfigurovať tak, aby umožňovali nekontrolované pripojenia. Ak hostiteľ nie je zadaný, mysql_connect () sa pokúsi pripojiť k lokálnemu hostiteľovi.

    Príklad otvorenia pripojenia k MySQL:

    @mysql_connect ("miestny hostiteľ", "web", "4tf9zzzf")

    V tomto príklade je localhost názov počítača, web je používateľské meno a 4tf9zzzf je heslo. Znak @ pred volaním funkcie mysql_connect () potláča všetky chybové hlásenia generované neúspešným pokusom o pripojenie – sú nahradené správou poskytnutou volaním die (). Všimnite si, že návratová hodnota z volania rnysql_connect () sa v tomto príklade nepoužije. Ak program používa iba jedno pripojenie k serveru MySQL, je to v poriadku. Ak sa však program pripája k viacerým serverom MySQL na rôznych hostiteľoch, mali by ste uložiť ID pripojenia vrátené volaním mysql_connect (), aby bolo možné nasledujúce príkazy nasmerovať na správny server MySQL. Príklad:

    $ link1 = @mysql_connect ("www.somehost.com", "web", "abcde") alebo zomrieť ("Nepodarilo sa pripojiť k

    MySQL server!");

    $ linkl = @mysql_connect ("www.someotherhost.com", "usr", "secret") alebo zomrieť ("Nepodarilo sa pripojiť

    na server MySQL!");

    Identifikátory $ link1 a $ link2 sú odovzdané pri následných dotazoch do databáz. Čoskoro sa presne dozviete, ako adresovať požiadavku na správny server pomocou ID pripojenia.

    Mysql_pconnect () poskytuje podporu pre trvalé pripojenia. V prostrediach s viacerými používateľmi sa odporúča použiť mysql_pconnect () namiesto mysql_connect (), aby sa šetrili systémové prostriedky. Funkcia mysql_pconnect () je v parametroch a typoch návratov úplne rovnaká. c mysql_connect ().

    mysql_select_db ()

    Po úspešnom pripojení k MySQL je potrebné vybrať databázu umiestnenú na serveri. Na to slúži funkcia mysql_select_db (). Syntax funkcie mysql_select_db () je:

    int mysql_select_db (reťazec názov_databázy [, int connection_id])

    Parameter database_name určuje databázu na výber, identifikátor

    ktorý vracia mysql_select_db (). Poznámka: parameter

    connection_identifier je voliteľný len pre jedno otvorené pripojenie s

    MySQL server. Ak existuje viacero otvorených pripojení, tento parameter

    musí byť špecifikované. Príklad výberu databázy pomocou funkcie mysql_select_db ():

    alebo zomrieť ("Nepodarilo sa pripojiť k serveru MySQL!");

    Ak program vyberie iba jednu databázu, nie je potrebné ukladať jej identifikátor. Keď je však vybratých viacero databáz, vrátené ID sa zachovajú, takže pri spracovaní požiadavky môžete odkazovať na správnu databázu. Ak nie je zadaný žiadny identifikátor, použije sa naposledy vybraná databáza.

    Po ukončení práce s MySQL serverom je potrebné spojenie ukončiť. Mysql_close () zatvorí pripojenie špecifikované voliteľným parametrom. Ak nie je zadaný, mysql_close () zatvorí posledné otvorené pripojenie. Syntax funkcie mysql_close () je:

    int mysql_close ()

    Príklad použitia mysql_close ():

    @mysql_connect ("localhost", "web", "4tf9zzzf")

    alebo zomrieť ("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db ("spoločnosť") alebo zomrieť ("Nepodarilo sa vybrať databázu spoločnosti!"); vytlač "Si pripojený k databáze MySQL!";

    V tomto príklade nemusíte špecifikovať identifikátor pripojenia, pretože v čase volania mysql_close () existuje iba jedno otvorené pripojenie k serveru.

    Pripojenia otvorené pomocou mysql_pconnect () nie je potrebné uzatvárať.

    Funkcia Mysql_query () poskytuje rozhranie pre dopytovanie databáz

    údajov. Syntax funkcie mysql_query () je:

    int mysql_query (reťazcový dotaz [, int connection_id])

    Parameter dotazu obsahuje text dotazu v jazyku SQL. Požiadavka sa odošle buď pripojeniu identifikovanému voliteľným parametrom connection_identifier, alebo, ak tento parameter chýba, poslednému otvorenému pripojeniu.

    Neskúsení programátori sa často mylne domnievajú, že funkcia mysql_query () vracia výsledky spracovania dotazu. Nie je to tak - v závislosti od typu dotazu môže mať volanie mysql_query () rôzne dôsledky. Po úspešnom vykonaní príkazu SQL SELECT sa vráti identifikátor výsledku, ktorý sa následne odovzdá funkcii mysql_result () na následné formátovanie a zobrazenie výsledkov dotazu. Ak spracovanie požiadavky zlyhá, funkcia vráti hodnotu FALSE. Funkcia mysql_result () je popísaná v jednej z nasledujúcich častí. Počet záznamov zahrnutých v dotaze je určený pomocou funkcie mysql_num_rows (). Táto funkcia je tiež popísaná nižšie.

    Na základe toho uvediem príklady použitia mysql_query () až po opísaní funkcií mysql_result () a mysql_affected_rows ().

    Ak sa obávate, že sa pri spracovaní dotazov spotrebúva príliš veľa pamäte, zavolajte štandardnú funkciu PHP mysql_free_result. Pri volaní sa odovzdá identifikátor výsledku vrátený mysql_query (). Funkcia mysql_free_result () uvoľní všetku pamäť spojenú s daným dotazom.

    mysqLaff ected_rows ()

    V mnohých situáciách chcete vedieť počet záznamov zahrnutých v dotaze SQL pomocou príkazu INSERT, UPDATE, REPLACE alebo DELETE. Problém rieši funkcia mysql_affected_rows (). Syntax funkcie:

    int mysql_affected_rows ()

    Všimnite si, že parameter connection_identifier je voliteľný. Ak nie je zadaný, mysql_affected_rqws () sa pokúsi použiť posledné otvorené pripojenie. Príklad:

    // Pripojte sa k serveru a vyberte databázu

    @mysql_connect ("localhost", "web". "4tf9zzzf")

    alebo zomrieť ("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db ("spoločnosť") alebo zomrieť ("Nepodarilo sa vybrať databázu spoločnosti!");

    // Vytvorenie požiadavky

    $ query = "AKTUALIZÁCIA SADA produktov názov_produktu = \" melón \ "

    WHERE prod_id = \ "10001pr \";

    // Vykonať požiadavku

    // Určenie počtu aktualizovaných záznamov

    print "Celkový riadok aktualizovaný;" .mysql_affected_rows ();

    Po vykonaní tohto úryvku sa zobrazí nasledujúci výstup:

    Celkový počet aktualizovaných riadkov: 1

    Mysql_affected_rows () nefunguje s príkazmi SELECT. Funkcia mysql_num_rows () opísaná v ďalšej časti sa používa na určenie počtu záznamov vrátených volaním SELECT.

    V jednej konkrétnej situácii funkcia mysql_affected_rows () zlyhá. Keď sa príkaz DELETE vykoná bez klauzuly WHERE, mysql_affected_rows () vždy vráti 0.

    mysql_num_rows ()

    Funkcia mysql_num_rows () určuje počet záznamov vrátených príkazom SELECT. Syntax funkcie mysql_num_rows () je:

    int mysql_num_rows (int výsledok)

    Príklad použitia mysql_num_rows ():

    // Pripojte sa k serveru a vyberte databázu @mysql_connect ("localhost", "web", "4tf9zzzf")

    alebo zomrieť ("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db ("spoločnosť") alebo zomrieť ("Nepodarilo sa vybrať databázu spoločnosti!");

    // Vyberte všetky produkty s názvami začínajúcimi na "p"

    $ query = "VYBERTE názov_výrobku FROM produktov WHERE názov_výrobku LIKE \" p * \ "";

    print "Celkový počet vybratých riadkov:" .mysql_num_rows ($ výsledok);

    Keďže tabuľka obsahuje iba jeden produkt, ktorého názov sa začína na písmeno p (hrušky), vráti sa iba jeden záznam. výsledok:

    Celkový počet vybratých riadkov: 1

    Funkcia mysql_result () sa používa v spojení s funkciou mysql_query () (pri vykonávaní dotazu pomocou príkazu SELECT) na získanie množiny údajov. Syntax funkcie mysql_resu1t () je:

    int mysql_result (int result_id, int záznam [. zmiešané pole "]")

    ResultID je hodnota vrátená mysql_query (). Parameter záznamu odkazuje na špecifický záznam v množine údajov identifikovaný parametrom output_identifier. Nakoniec vo voliteľnom parametri môže byť pole odovzdané:

    • posun poľa v tabuľke;
    • názov poľa;
    • názov poľa vo formáte názov_poľa_názov_dbl.

    Výpis 11.1 používa databázu zobrazenú na obrázku 11-1. 11.1.

    Výpis 11.1. Načítanie a formátovanie údajov v databáze MySQL

    @mysql_connect ("localhost", "web", "ffttss")

    alebo zomrieť ("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db ("spoločnosť")

    // Vyberte všetky záznamy z tabuľky produktov

    $ dotaz = "VYBERTE * Z produktov"; $ vysledok = mysql_query (dotaz $);

    vytlačiť "

    \ n ";

    vytlačiť "

    \ n \ n\ n ";

    zatiaľ čo ($ x< mysql_numrows($result)) :

    $ id = mysql_result ($ výsledok. $ x. "prod_id");

    $ name = mysql_result ($ výsledok, $ x, "názov_produktu");

    $ cena = mysql_result ($ výsledok. $ x, "cena_produktu");

    vytlačiť "

    \ n ";

    vytlačiť "

    \ n \ n \ n ";

    vytlačiť "

    \ n ";

    vytlačiť "

    identifikačné číslo produktuMeno ProduktuCena produktu
    $ id$ meno$ cena
    ";

    V dôsledku vykonania tohto príkladu s údajmi znázornenými na obr. 11.1 získate nasledujúci výstup:

    Výpis 11.2. Výsledok spustenia výpisu 11.1

    identifikačné číslo produktuMeno ProduktuCena produktu

    1000 eur

    jablká

    1.23

    1001 pr

    pomaranče

    2.34

    1002 pr

    banány

    3.45

    1003 pr

    hrušky

    4.45

    Funkcia mysql_result () je vhodná na prácu s relatívne malými súbormi údajov, existujú však aj iné funkcie, ktoré pracujú oveľa efektívnejšie, konkrétne funkcie mysql_fetch_row () a mysql_fetch_array (). Tieto funkcie sú popísané v nasledujúcich častiach.

    mysql_fetch_row ()

    Zvyčajne je oveľa pohodlnejšie okamžite priradiť hodnoty všetkých polí záznamu k prvkom indexovaného poľa (začínajúc indexom 0), ako opakovane volať mysql_result () na získanie jednotlivých polí. Úlohu rieši funkcia mysql_fetch_row (), ktorá má nasledujúcu syntax:

    pole mysql_fetch_row (výsledok int)

    Použitie funkcie list () v spojení s mysql_fetch_row () ušetrí niekoľko príkazov potrebných pri použití mysql_result (). Výpis 11.3 zobrazuje kód vo Výpise 11.1, prepísaný pomocou zoznamu () a mysql_fetch_row ().

    Výpis 11.3. Načítavanie údajov pomocou funkcie mysql_fetch_row ().

    @mysql_connect ("localhost", "web", "ffttss") alebo zomrieť ("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db ("spoločnosť") alebo zomrieť ("Nepodarilo sa vybrať databázu produktov!");

    $ dotaz = "VYBERTE * Z produktov";

    $ vysledok = mysql_query (dotaz $);

    vytlačiť "

    \ n ";

    vytlačiť "

    \ n \ n\ n ";

    while ($ riadok = mysql_fetch_array ($ výsledok)):

    vytlačiť "

    \ n ":

    vytlačiť "

    \ n \ n \ n ";

    vytlačiť "

    \ n ";

    vytlačiť "

    identifikačné číslo produktuMeno Produktu

    Cena produktu

    ". $ riadok [" prod_id "]."". $ riadok [" názov_produktu "]."

    ". $ riadok [" prod_price "]."
    ";

    Výpis 11.3 poskytuje rovnaký výsledok ako výpis 11.1, ale používa menej príkazov.

    moje sq l_f etch_array ()

    Mysql_fetch_array () je podobný ako mysql_fetch_row (), avšak predvolene sú polia záznamov uložené v asociatívne pole. Môžete si však vybrať typ indexovania (asociatívne, číselné alebo kombinované). Syntax funkcie mysql_fetch_array () je:

    pole mysql_fetch_array (int result id [, index_type])

    ResultID je hodnota vrátená mysql_query (). Voliteľný parameter index_type má jednu z nasledujúcich hodnôt:

    • MYSQL_ASSOC - Funkcia mysql_fetch_array () vracia asociatívne pole. Ak parameter nie je zadaný, štandardne sa použije táto hodnota;
    • MYSQL_NUM - funkcia mysql_fetch_array () vracia číselne indexované pole;
    • MYSQL_BOTH - polia vráteného záznamu sú prístupné pomocou číselných aj asociatívnych indexov.

    Výpis 11.4 ukazuje ďalšiu variáciu kódu pre výpisy 11.1 a 11.3. Tentokrát je použitá funkcia mysql_fetch_array (), ktorá vracia asociatívne pole polí.

    Výpis 11.4. Načítavanie údajov pomocou funkcie mysql_fetch_array ().

    @mysql_connect ("miestny hostiteľ", "web", "ffttss")

    alebo zomrieť ("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db ("spoločnosť")

    alebo zomrieť ("Nepodarilo sa vybrať databázu produktov!");

    $ dotaz = "VYBERTE * Z produktov";

    $ vysledok = mysql_query (dotaz $);

    "

    \ n ";

    vytlačiť "

    \ n \ n\ n ";

    vytlačiť "

    \ n ";

    vytlačiť "

    \ n \ n \ n ";

    vytlačiť "

    \ n ";

    vytlačiť "

    identifikačné číslo produktuMeno Produktu Cena produktu
    ". $ riadok [" prod_id "]."". $ riadok [" názov_produktu "]."". $ riadok [" prod_price "]."
    ";

    Výpis 11.4 dáva rovnaký výsledok ako výpis 11.1 a 11.3.

    To, čo teraz viete o funkcionalite MySQL v PHP, stačí na to, aby ste mohli začať vytvárať celkom zaujímavé aplikácie. Prvá aplikácia, na ktorú sa pozrieme, je základný vyhľadávací nástroj. Tento príklad demonštruje použitie formulárov HTML (pozri predchádzajúcu kapitolu) na získanie údajov, ktoré sa neskôr použijú na získanie informácií z databázy.

    Príklad najjednoduchšieho vyhľadávača v PHP

    Všetci sme mnohokrát použili webové vyhľadávače, ale ako takéto systémy fungujú? Najjednoduchší vyhľadávač akceptuje aspoň jedno kľúčové slovo. Toto slovo je zahrnuté v dotaze SQL, ktorý sa potom používa na získanie informácií z databázy. Výsledok vyhľadávania je formátovaný vyhľadávacím nástrojom podľa jedného alebo druhého kritéria (povedzme podľa kategórie alebo stupňa relevantnosti).

    Vyhľadávač vo Výpise 11.5 je určený na vyhľadávanie informácií o zákazníkoch. Používateľ do formulára zadá kľúčové slovo a vyberie kategóriu (meno, IČO, prípadne emailovú adresu zákazníka), ktorú bude hľadať. Ak užívateľom zadaný názov, identifikátor alebo adresa existuje, vyhľadávací nástroj získa zostávajúce atribúty z databázy. Potom sa vyberie pomocou identifikátora kupujúceho z tabuľky objednávok

    História objednávok. Všetky objednávky zadané týmto klientom sú zobrazené v zostupnom poradí podľa objemu. Ak sa zadané kľúčové slovo nenájde v kategórii zadanej používateľom, vyhľadávanie sa zastaví, program zobrazí zodpovedajúcu správu a znova zobrazí formulár.

    Výpis 11.5. Najjednoduchší vyhľadávač (searchengine.php)

    "

    kľúčové slovo:


    Zameranie vyhľadávania:


    ,

    // Ak formulár ešte nebol zobrazený, zobrazte ho

    if (Sseenform! = "y"):

    vytlačiť $ formulár; inak:

    @mysql_connect ("localhost", "web", "ffttss")

    alebo zomrieť ("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db ("spoločnosť")

    // Zostavte a spustite dotaz

    $ query = "SELECT cust_id. cust_name, cust_email

    FROM customers WHERE $ category = "$ kľúčové slovo" ";

    $ vysledok = mysql_query (dotaz $);

    // Ak sa nenájdu žiadne zhody, zobrazte správu

    // a znova vykreslite formulár

    if (mysql_num_rows (výsledok $) == 0):

    vytlačiť "Prepáčte, ale nenašli sa žiadne zhody. Skúste znova hľadať:";

    // Nájdené zhody. Naformátujte a vypíšte výsledky, inak:

    // Formátovanie a zobrazenie hodnôt polí.

    zoznam ($ id, $ name, $ email) = mysql_fetch_row ($ výsledok);

    vytlačiť "

    Informácie pre zákazníka:

    ";

    vytlačiť " Názov:$ meno
    ";

    vytlačiť " Identifikačné číslo:$ id
    ";

    vytlačiť " Email: $ e-mail
    ";

    vytlačiť "

    História objednávok:

    ";

    // Zostavte a spustite dotaz v tabuľke "objednávky".

    $ dotaz = "SELECT order_id, prod_id, mnozstvo

    FROM orders WHERE cust_id = "$ id"

    OBJEDNAŤ PODĽA množstva DESC ";

    $ vysledok = mysql_query (dotaz $):

    vytlačiť "

    ";

    vytlačiť "

    ";

    // Naformátujte a zobrazte nájdené záznamy.

    while (zoznam ($ order_id, $ prod_id, $ množstvo) = mysql_fetch_row ($ výsledok));

    vytlačiť "

    ";

    vytlačiť "

    ";

    vytlačiť "

    ";

    vytlačiť "

    0 ID objednávkyidentifikačné číslo produktumnožstvo
    $ order_id$ prod_idmnožstvo $
    ";

    Ak zadáte kľúčové slovo Mi 1 apo a z rozbaľovacieho zoznamu vyberiete kategóriu Meno zákazníka, program zobrazí nasledujúce informácie:

    Informácie pre zákazníka:

    Názov: Milano

    Identifikačné číslo: 2000 cu

    Email:

    Číslo objednávky Identifikačné číslo produktu množstvo
    100003 1000 eur 12
    100005 1002 pr 11

    Samozrejme, zaoberali sme sa najjednoduchšou implementáciou vyhľadávacieho nástroja. Existuje mnoho ďalších možností – vyhľadávanie viacerých kľúčových slov, vyhľadávanie neúplných kľúčových slov alebo automatický výber záznamov s podobnými kľúčovými slovami. Skúste uplatniť svoju tvorivú fantáziu a zrealizujte ich sami.

    Triediace tabuľky

    Pri výstupe údajov z databázy je potrebné zabezpečiť možnosť ich triedenia podľa rôznych kritérií. Ako príklad sa pozrime na výsledky vrátené naším vyhľadávacím nástrojom – za nadpisom História objednávok venujte zvláštnu pozornosť nasledujúcemu: Povedzme, že váš zoznam je veľmi dlhý a chcete údaje zoradiť podľa ID produktu (alebo ID objednávky). Ak chcete lepšie pochopiť, o čo ide, odporúčam navštíviť jednu z mojich obľúbených stránok http://download.cnet.com. Ak pri prezeraní programov určitej kategórie kliknete na hlavičku stĺpca (názov, dátum umiestnenia, počet stiahnutí alebo veľkosť súboru), zoznam sa automaticky zoradí podľa obsahu zadaného stĺpca. Nasledujúci text ukazuje, ako implementovať túto funkciu.

    Vo výpise 11.6 načítavame údaje z tabuľky objednávok. V predvolenom nastavení sú údaje zoradené v zostupnom poradí podľa objemu (pole množstva). Kliknutím na ľubovoľný nadpis tabuľky sa však stránka znova načíta a zoradí tabuľku podľa určeného stĺpca.

    Výpis 11.6. Triediace tabuľky (tablesorter.php)

    // Pripojte sa k serveru MySQL a vyberte databázu

    @mysql_connect ("localhost". "web", "ffttss")

    alebo zomrieť ("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db ("spoločnosť")

    alebo zomrieť ("Nepodarilo sa vybrať databázu spoločnosti!");

    // Ak hodnota kľúčovej premennej $ nie je nastavená, štandardne

    // použite hodnotu "množstvo", ak (! isset (kľúč $)):

    $ kľúč = "množstvo"; koniec Ak;

    // Vytvorte a spustite požiadavku.

    // Vybraté údaje sú zoradené v zostupnom poradí podľa kľúčového stĺpca $

    $ dotaz = "SELECT order_id, cust_id, prod_id, množstvo FROM orders ORDER BY $ key DESC" $ result = mysql_query ($ dotaz);

    // Vytvorenie hlavičky tabuľky

    vytlačiť "

    ";

    vytlačiť "

    ";

    // Naformátujte a vytlačte každý riadok tabuľky

    while (zoznam ($ order_id, $ cust_id, $ prod_id, $ množstvo)

    Mysql_fetch_row (výsledok $)):

    vytlačiť "

    ";

    vytlačiť "

    ";

    vytlačiť "

    ";

    // Koniec tabuľky

    vytlačiť "

    Číslo objednávky ID zákazníka identifikačné číslo produktu množstvo

    $ order_id$ cust_id$ prod_id

    množstvo $

    ";

    Pre firemnú databázu znázornenú na obr. 11.1, štandardný výstup z výpisu 11.6 vyzerá takto:

    Číslo objednávky ID zákazníka identifikačné číslo produktu množstvo
    2000 cu 1000 eur 12
    2000 cu 1002 pr 11
    2000 cu 1000 eur 9
    2000 cu 1001 pr 5
    2000 cu 1002 pr 3

    Upozorňujeme, že hlavičky tabuliek sú hypertextové odkazy. Keďže štandardne je zoradené podľa množstva, záznamy sú zoradené v zostupnom poradí podľa posledného stĺpca. Kliknutím na odkaz Order_ID sa stránka znova načíta, ale tentoraz sú záznamy zoradené v zostupnom poradí podľa ID objednávky. Tabuľka bude vyzerať takto:

    Číslo objednávky ID zákazníka identifikačné číslo produktu množstvo
    2000 cu 1002 pr 11
    2000 cu 1000 eur 9
    2000 cu 1000 eur 12
    2000 cu 1001 pr 5
    2000 cu 1002 pr 3

    Triedenie výstupu je veľkým prínosom pri formátovaní databáz. Jednoduchá úprava SELECT dotazu umožňuje triediť dáta podľa ľubovoľného kritéria - vzostupne, zostupne alebo so zoskupením záznamov.

    Týmto sa končí náš úvod do MySQL. Upozorňujeme, že táto kapitola nie je zďaleka všetko, čo by ste mali vedieť o MySQL. Úplný zoznam príkazov MySQL v PHP nájdete v dokumentácii (http://www.php.net/manuat).

    ODBC

    Špecializované funkcie sú vhodné na prácu s jedným špecifickým typom DBMS. Čo ak sa však musíte pripojiť k MySQL, Microsoft SQL Server a IBM DB2, všetko v tej istej aplikácii? Podobný problém vzniká pri vývoji aplikácií, ktoré by nemali závisieť od DBMS; takéto aplikácie fungujú „na“ existujúcej klientskej databázovej infraštruktúre. ODBC, skratka pre Open Database Connectivity, je aplikačné programové rozhranie (API), ktoré vám umožňuje používať spoločnú sadu abstraktných funkcií na prácu s rôznymi typmi databáz. Výhody tohto prístupu sú zrejmé – nemusíte znova a znova prepisovať ten istý kus kódu, len aby ste mohli vykonávať rovnaké operácie s rôznymi typmi databáz.

    Práca s databázovým serverom cez ODBC je možná len vtedy, ak je server kompatibilný s ODBC. Inými slovami, musia existovať ovládače ODBC. Ďalšie informácie o ovládačoch ODBC nájdete v dokumentácii DBMS. Možno ich budete musieť dodatočne stiahnuť z internetu a nainštalovať do počítača. Hoci sa štandard ODBC vyvinutý spoločnosťou Microsoft stal otvoreným štandardom, používa sa najmä na prácu s DBMS na platforme Windows; ovládače ODBC však existujú aj na platforme Linux. Nižšie sú uvedené odkazy na ovládače pre niektoré z populárnych DBMS.

    • Databázové ovládače pre Windows 95/98 / NT: http://www.microsoft.com/data/odbc
    • Automation Technologies: http://www.odbcsdk.com
    • Easysoft: http://www.easysoft.com/products/oob/main.phtml
    • Ovládače ODBC pre MySQL (MyODBC): http://www.mysql.com
    • OpenLinkSoftware: http://www.openlinksw.com

    Ovládače ODBC sa líšia účelom, platformou a účelom. Informácie o rôznych aspektoch práce s týmito ovládačmi nájdete v dokumentácii pre konkrétny balík. Napriek všetkým rozdielom je však použitie týchto ovládačov v PHP bezproblémové.

    Keď zistíte, ktorá súprava ovládača ODBC je pre vaše potreby najlepšia, stiahnite si ju a postupujte podľa pokynov na inštaláciu a konfiguráciu. Potom môžete prejsť na ďalšiu časť - "Podpora ODBC v PHP".

    Podpora ODBC v PHP

    Funkcie ODBC v PHP, bežne nazývané bežné funkcie ODBC, poskytujú nielen všeobecnú podporu ODBC, ale tiež vám umožňujú pracovať s niektorými DBMS, ktoré majú svoje vlastné API prostredníctvom štandardného ODBC API. Tieto zahŕňajú nasledujúce DBMS:

    • Adabas D;
    • IODBC;
    • IBM DB2;
    • Pevné;
    • Sybase SQL Anywhere.

    Poznámka: pri práci s uvedeným DBMS sa v skutočnosti nepoužíva štandardný mechanizmus ODBC. Všeobecné funkcie ODBC jednoducho podporované v PHP sa používajú na interakciu s databázami. Je to výhodné, pretože keď prejdete na iný DBMS kompatibilný s ODBC (alebo z vyššie uvedeného zoznamu), všetky vaše skripty budú fungovať správne.

    Podpora ODBC je zabudovaná v balíku PHP, takže až na zriedkavé výnimky nemusíte riešiť žiadnu špeciálnu konfiguráciu.

    V súčasnosti existuje asi 40 bežných funkcií ODBC. Na získanie informácií z databázy kompatibilnej s ODBC však postačuje niekoľko funkcií popísaných nižšie. Úplný zoznam bežných funkcií ODBC v PHP nájdete v dokumentácii (http://www.php.net/manual).

    Predtým, ako budete môcť dopytovať databázu kompatibilnú s ODBC, musíte s ňou najprv komunikovať. Pripojenie sa vytvorí pomocou funkcie ocbc_connect (). Syntax funkcie odbc_connect () je:

    int odbc_connect (zdroj údajov reťazca, používateľské meno reťazca, heslo reťazca [, int typ_kurzora])

    Parameter zdroja údajov špecifikuje databázu kompatibilnú s ODBC, s ktorou sa pokúšate komunikovať. Ako by ste mohli hádať, parametre používateľského mena a hesla obsahujú používateľské meno a heslo potrebné na pripojenie k zdroju údajov. Na opravu problémov s niektorými ovládačmi ODBC je voliteľný parameter kurzor_type "n". Môže nadobúdať jednu zo štyroch možných hodnôt:

    • SQL_CUR_USE_IF_NEEDED;
    • SQL_CURSOR_USE_ODBC;
    • SQL_CUR_USE_DRIVER;
    • SQL CUR DEFAULT.

    Možno nebudete musieť použiť tento parameter, ale mali by ste si ho uvedomiť v prípade, že váš balík ODBC nedokáže spracovať konkrétnu požiadavku.

    Nie je ťažké použiť odbc_connect () v programe. Príklad:

    Funkcia sa používa na otváranie trvalých databázových pripojení. Šetrí systémové prostriedky, pretože odbc_pconnect () kontroluje, či bolo dané pripojenie predtým otvorené, a ak áno, používa predchádzajúce pripojenie.

    Po dokončení práce s databázou kompatibilnou s ODBC musíte zatvoriť pripojenie, aby ste uvoľnili všetky prostriedky používané otvoreným pripojením. Spojenie sa uzavrie funkciou odbc_close ():

    void odbc_close ()

    Parameter connection_id obsahuje identifikátor otvoreného pripojenia. Pozrime sa na malý príklad:

    obdc_connect ("myAccessDB", "user", "secret")

    alebo zomrieť ("Nedá sa pripojiť k databáze ODBC");

    vytlačiť "Momentálne pripojené k databáze ODBC!"; odbc_close ($ pripojiť);

    Žiadosť musí byť „pripravená“ pred jej priamym spracovaním. Úlohu rieši funkcia odbc_prepare ():

    int odbc_prepare (int connection_identifier, string request)

    Parameter connection_identifier je identifikátor pripojenia vrátený funkciou odbc_connect (). Parameter požiadavky obsahuje text požiadavky, ktorý má server vykonať. Ak požiadavku nemožno dokončiť, funkcia vráti FALSE; v opačnom prípade sa vráti identifikátor výsledku, ktorý sa neskôr použije pri volaní funkcie odbc_execute () (pozri nižšie).

    Dotaz pripravený funkciou odbc_prepare () vykoná funkcia odbc_execute (). Syntax funkcie odbc_execute () je:

    int odbc_execute (int result id [, parametre poľa])

    Parameter result_ID je identifikátor výsledku vrátený pri úspešnom volaní odbc_prepare (). Voliteľný parameter sa odovzdá iba vtedy, ak sa vo volaní funkcie odovzdajú ďalšie údaje.

    Zvážte nasledujúci príklad:

    $ connect = @obdc_connect ("myAccessDB", "user", "secret")

    alebo zomrieť ("Nedá sa pripojiť k databáze ODBC");

    $ query = "AKTUALIZÁCIA SET zákazníkov cust_id = \" Milano, Inc. \ "

    WHERE cust_id \ "2000cu \" ";

    $ výsledok = odbc_prepare ($ pripojiť, $ dotaz) alebo zomrieť ("Nedá sa" pripraviť dotaz! ");

    $ result = odbc_execute ($ výsledok) alebo zomrieť ("Nedá sa" t vykonať dotaz! ");

    odbc_close ($ pripojiť);

    Tento príklad demonštruje transakciu ODBC, v ktorej sa údaje dotazu nezobrazujú v prehliadači (ako sa to zvyčajne robí pomocou príkazu SELECT). Transakcia ODBC pomocou dotazu QUERY je popísaná nižšie v časti „odbc_result_all ()“.

    Funkcia Odbc_exec () kombinuje funkcie odbc_prepare () a odbc_execute (). Syntax funkcie odbc_exec () je:

    int odbc_exec (int connection_id, požiadavka na reťazec)

    Parameter connection_identifier je identifikátor pripojenia vrátený funkciou odbc_connect (). Parameter požiadavky obsahuje text požiadavky, ktorý má server vykonať. Ak požiadavku nemožno dokončiť, funkcia vráti FALSE; inak sa vráti identifikátor výsledku, ktorý sa používa v nasledujúcich volaniach funkcií:

    obdc_connect ("myAccessDB", "user", "secret")

    alebo zomrieť ("Nedá sa pripojiť k databáze ODBC");

    odbc_close ($ pripojiť);

    V tomto príklade sa funkcia odbc_exec () pokúša vykonať dotaz, ktorého text je obsiahnutý v premennej $ dotazu. Po úspechu sa premennej $ result priradí identifikátor výsledku; ak je neúspešné, nastaví sa na FALSE a zobrazí sa správa vrátená volaním kocky ().

    odbc_result_all ()

    Veľmi praktická funkcia odbc_result_all () naformátuje a zobrazí všetky záznamy pre identifikátor výsledku získaný volaním odbc_exec () alebo odbc_execute (). Syntax funkcie odbc_result_all () je:

    int odbc_result_all (int result_id [, formát tabuľky_reťazca])

    ResultID je identifikátor výsledku, ktorý sa vráti pri úspešnom volaní odbc_exec () alebo odbc_execute (). Voliteľný parameter table_format odovzdá charakteristiky tabuľky HTML. Zvážte nasledujúci príklad:

    obdc_connect ("myAccessDB", "user", "secret")

    alebo zomrieť ("Nedá sa pripojiť k databáze ODBC");

    $ dotaz = "VYBERTE * OD zákazníkov";

    $ výsledok = odbc_exec ($ pripojiť, $ dotaz) alebo zomrieť ("Nedá sa" spustiť dotaz! ");

    odbc_result_all (výsledok $, "BGCOLOR =" # c0c0c0 "border =" 1 "");

    odbc_close ($ pripojiť);

    V dôsledku vykonania tohto príkladu sa obsah tabuľky zákazníkov zobrazí v tabuľke na svetlosivom pozadí s okrajom s hrúbkou 1. Vzhľad tabuľky pre údaje znázornené na obr. 11.1 je znázornená na obr. 11.2.

    Ryža. 11.2. Údaje ODBC v prehliadači

    odbc_free_result ()

    Dobrý štýl programovania vyžaduje uvoľnenie všetkých zdrojov spojených s dokončenými operáciami. Pri práci s ODBC dotazmi je táto úloha vyriešená funkciou odbc_free_result (). Syntax funkcie odbc_free_result () je:

    int odbc_free_result (int result_id)

    Parameter funkcie obsahuje identifikátor výsledku, ktorý sa už v programe nebude používať. Pamätajte, že všetky pamäťové prostriedky sa po skončení skriptu automaticky uvoľnia; teda volanie odbc_free_result () je potrebné len pre veľmi veľké dotazy, ktoré spotrebúvajú veľmi veľké množstvo pamäte. Nižšie je uvedený príklad, ktorý demonštruje použitie odbc_free_result (). Pamätajte, že túto funkciu možno zvyčajne vynechať, pokiaľ nemáte v úmysle vykonať viacero požiadaviek v tom istom skripte, pretože po dokončení skriptu sa všetka pamäť automaticky uvoľní.

    obdc_connect ("myAccessDB", "user", "secret")

    alebo zomrieť ("Nedá sa pripojiť k databáze ODBC");

    $ dotaz = "VYBERTE * OD zákazníkov":

    $ výsledok = odbc_exec ($ pripojiť, $ dotaz) alebo zomrieť ("Nedá sa" spustiť dotaz! ");

    odbc_result_all (výsledok $, "BGCOLOR =" # c0c0c0 "border =" 1 "" ");

    odbc_free_result ($ výsledok);

    odbc_close ($ pripojiť);

    Keď odbc_result_all () dokončí používanie identifikátora výsledku, pamäť sa vráti do systému pomocou odbc_free_result ().

    Týmto sa uzatvára náš úvod do funkcií ODBC v PHP, ktoré sú nevyhnutné na vytváranie jednoduchých rozhraní pre webový prístup založených na ODBC. V ďalšej časti sa mnohé z týchto funkcií použijú na demonštráciu toho, aká jednoduchá je interakcia PHP s jedným z najpopulárnejších systémov správy databáz, Microsoft Access.

    Microsoft Access a PHP

    Popularita Microsoft Access (http://www.microsoft.com/office/access) je čiastočne spôsobená jeho užívateľsky prívetivým grafickým rozhraním. Okrem používania Accessu ako samostatného systému správy databáz môžete jeho grafické rozhranie využiť na organizáciu práce s inými databázami – napríklad MySQL alebo Microsoft SQL Server.

    Aby som demonštroval podporu ODBC v PHP, popíšem proces pripojenia k databázam Microsoft Access v PHP. Je to prekvapivo jednoduché, ale popularita Microsoft Access z neho robí užitočný doplnok vášho kreatívneho arzenálu. Popíšem tento proces krok za krokom:

    1. Vytvorte databázu programu Access. Predpokladá sa, že už viete, ako to urobiť, a ak neviete ako, ale napriek tomu chcete sledovať implementáciu tohto príkladu, použite služby sprievodcu. Vytvoril som štandardnú databázu na ukladanie kontaktných informácií pomocou sprievodcu. Nezabudnite vytvoriť nejaké záznamy v tabuľke a zapamätajte si názov tabuľky, čoskoro ho budeme potrebovať!
    2. Uložte databázu do počítača.
    3. V ďalšom kroku zorganizujeme prístup k databáze Access pomocou ODBC. Vyberte položku Štart > Nastavenia > Ovládací panel (Štart > nastavenie > Ovládací panel). Nájdite ikonu Zdroje údajov ODBC (32-bitové) v ovládacom paneli. Táto ikona spustí správcu ODBC na konfiguráciu rôznych ovládačov a zdrojov údajov vo vašom systéme. Spustite program dvojitým kliknutím na túto ikonu. Okno správcu sa štandardne otvorí na karte User DSN. Na tejto karte sú uvedené zdroje údajov – ktoré sú špecifické pre konkrétneho používateľa a možno ich použiť iba na tomto počítači. Tento príklad bude používať práve takýto zdroj údajov.
    4. Kliknite na tlačidlo Pridať ... na pravej strane okna. Otvorí sa nové okno na výber ovládača určeného na prácu s novým zdrojom. Vyberte riadok Microsoft Access Driver (* .mdb) a kliknite na tlačidlo Dokončiť.
    5. Na obrazovke sa zobrazí nové okno Inštalácia ovládača ODBC pre Microsoft Access (ODBC Microsoft Access Setup). Vo formulári nájdite textové pole Názov zdroja údajov a zadajte názov databázy programu Access, ktorú ste vytvorili. Voliteľne môžete zadať popis do textového poľa umiestneného priamo pod poľom Názov zdroja údajov.
    6. Kliknite na tlačidlo Vybrať... - zobrazí sa okno v štýle Prieskumníka Windows. Požiada vás o nájdenie databázy, ku ktorej sa bude pristupovať prostredníctvom ODBC.
    7. Nájdite svoju databázu v strome adresárov a dvakrát na ňu kliknite. Vrátite sa do okna Microsoft Access ODBC Driver Installation. Cesta k vybranej databáze sa zobrazí nad tlačidlom Vybrať .... Kliknite na tlačidlo OK.
    8. Pripravený! Teraz môžete pracovať s databázou programu Access pomocou ODBC.

    Stačí si vytvoriť skript, v ktorom budete pracovať s databázou cez ODBC. V nasledujúcom skripte sa bežné funkcie ODBC (vyššie) použijú na zobrazenie všetkých informácií z tabuľky kontaktov, ktorá bola vytvorená pomocou sprievodcu Access. Pred pohľadom na scenár je však vhodné vedieť, ako vyzerá tabuľka Kontakty v Accesse (obrázok 11.3).

    Ryža. 11.3. Tabuľka kontaktov v MS Access

    Teraz, keď viete, aké informácie sa získajú z databázy, môžeme prejsť na skript. Ak ste zabudli, čo funkcia robí, pozrite si popis na začiatku tejto kapitoly. Výstup z výpisu 11.7 je znázornený na obrázku 11. 11.4.

    Výpis 11.7. Používanie funkcií ODBC na prácu s MS Access

    // Pripojenie k zdroju údajov ODBC "ContactDB"; pripojenie = odbc_connect ("ContactDB", "", "")

    alebo zomrieť ("Nedá sa" pripojiť k zdroju údajov. ");

    // Vytvorenie textu požiadavky

    $ dotaz = "VYBRAŤ Meno, Priezvisko, Mobilný_telefón, E-mail Z kontaktov";

    // Pripravte požiadavku

    $ vysledok = odbc_prepare ($ pripojenie, $ dotaz);

    // Spustite dotaz a zobrazte výsledky

    odbc_execute (výsledok $);

    odbc_result_all (výsledok $, "BGCOLOR =" # c0c0c0 "hranica = 1");

    // Spracovanie výsledkov je ukončené, voľná pamäť odbc_free_result ($ výsledok);

    // Zatvorte spojenie odbc_close ($ connect);

    Nie je to také jednoduché? Najlepšie zo všetkého je, že tento skript je plne kompatibilný s akýmkoľvek iným DBMS s podporou ODBC. Na školenie skúste zopakovať všetky opísané kroky pre iný DBMS, spustite skript - a dostanete rovnaké výsledky, ako je znázornené na obr. 11.4.

    Ryža. 11.4. Obsah tabuľky Kontakty vo webovom prehliadači

    Projekt: Adresár odkazov PHP

    Najjednoduchší spôsob, ako naplniť vašu stránku skutočným obsahom, je nechať používateľa, aby to urobil za vás. Najpohodlnejším spôsobom zadávania údajov je samozrejme použiť HTML formulár.

    Údaje zadané používateľom musia byť spracované a uložené. V koncepte predchádzajúcej kapitoly ste ukázali, aká jednoduchá je táto úloha s PHP a textovým súborom. Na ukladanie relatívne malých a jednoduchých údajov sú nepochybne dobré textové súbory, no v plnohodnotných webových aplikáciách sa informácie zvyčajne ukladajú do databáz. V tomto príklade sa na ukladanie informácií o webových lokalitách používa databáza MySQL. Pre uľahčenie navigácie sú stránky rozdelené do niekoľkých kategórií. Používateľ môže zadať informácie o stránke vo forme HTML a zaradiť ju do jednej zo štandardných kategórií definovaných administrátorom stránky. Okrem toho si používateľ môže stiahnuť indexovú stránku a zobraziť zoznam všetkých stránok v danej kategórii kliknutím na jej názov.

    Najprv sa musíte rozhodnúť, aké informácie o lokalite budú uložené v databáze SQL. Pre jednoduchosť sa obmedzím na nasledujúcu sadu atribútov: názov, URL, kategória, dátum zaradenia a popis. Definícia tabuľky v MySQL teda vyzerá asi takto:

    mysql> vytvorte záložky tabuliek (kategória INT, site_name char (35), url char (50),

    date_added date, description char (254));

    Pri definícii tabuľky záložiek je potrebné poznamenať niekoľko vecí. Po prvé, z nejakého dôvodu sú informácie o kategórii lokality uložené ako celé číslo -- ale nebolo by správnejšie, aby názvy kategórií boli pre používateľa zmysluplnejšie a zrozumiteľnejšie? Nebojte sa, v inicializačnom súbore sa vytvorí pole, ktoré spojí celočíselné indexy s názvami kategórií. V budúcnosti môže administrátor jednotlivé kategórie meniť a dokonca aj mazať. Ukladanie informácií o kategórii výrazne zjednodušuje túto úlohu. Okrem toho pole celé číslo šetrí miesto na disku, pretože názov kategórie je v tabuľke uložený viackrát. Ďalšou okolnosťou súvisiacou so štruktúrou tabuľky je obmedzenie dĺžky popisu na 254 znakov. V závislosti od tohto rozsahu popisov môžete namiesto typu char () použiť typ média alebo text. Viac informácií o typoch polí nájdete v dokumentácii MySQL.

    Ďalším krokom pri práci na tejto aplikácii je vytvorenie inicializačného súboru. Okrem globálnych premenných sú v inicializačnom súbore definované dve funkcie: add_bookmark () a view_bookmark (). Funkcia add_bookmark () prevezme vstup používateľa z formulára a zahrnie ho do databázy. Funkcia view_bookmark () získa index kategórie, načíta všetky záznamy, ktoré patria do zadanej kategórie, z databázy a zobrazí ich v prehliadači. Komentovaný inicializačný súbor aplikácie init.inc je zobrazený vo výpise 11.8.

    Výpis 11.8. Odkaz na inicializačný súbor adresára (init.inc)

    // Súbor: init.inc

    // Účel: globálne premenné a funkcie.

    // použité v projekte

    // Predvolený názov stránky $ title = "(! JAZYK: Môj archív záložiek":!}

    // Farba pozadia $ bg_color = "biela";

    $ post_date = dátum ("Ymd");

    "zábava",

    // údaje servera MySQL $ host = "localhost"; $ user = "root"; $ pswd = "";

    // Názov databázy $ databáza = "kniha";

    // Názov tabuľky $ bookmark_table = "záložky";

    // Farba buniek tabuľky $ cell_color = "# c0c0c0";

    // Vytvorte pripojenie k serveru MySQL

    @mysql_pconnect ($ hostiteľ, $ používateľ, $ pswd) alebo zomriete ("Nedá sa" pripojiť k serveru MySQL! ");

    // Výber databázy

    @mysql_select_db (databáza $) alebo zomrieť ("Nedá sa" vybrať databázu databázy! ");

    // Funkcia: add_bookmark ()

    function add_bookmark (Kategória, Ssitejname. $ url, $ popis) (

    GLOBAL $ tabuľka_záložiek, $ post_date;

    $ query = "INSERT INTO $ bookmark_table

    VALUES (\ "$ category \", \ "$ site_name \", \ "$ url \", \ "$ post_date \", \ "$ popis \") ";

    $ výsledok = @mysql_query (dotaz $) alebo zomrieť ("Nedá sa" vložiť informácie o záložke! ");

    ) // pridať záložku<

    // Funkcia: view_bookmark ()

    // Účel: výber všetkých odkazov z tabuľky záložiek,

    function view_bookmark ($ category) (

    GLOBAL $ tabuľka_záložiek, $ farba_bunky, $ kategórie;

    $ query = "SELECT site_name, url, DATE_FORMAT (date_added,"% m-% d-% Y ") AS date_added, description

    FROM $ tabuľka záložiek WHERE kategória = $ kategória ORDER BY datejdded DESC ";

    $ vysledok = @mysql_query (dotaz $);

    vytlačiť "

    ";

    vytlačiť "

    ";

    if (mysql_numrows ($ výsledok)> 0);

    while ($ riadok = mysql_fetch_array ($ výsledok));

    Zaslané: ". $ Row [" dátum pridania "]."
    "

    vytlačiť "

    ";

    vytlačiť "

    ";

    vytlačiť "

    ";

    vytlačiť "

    ";

    vytlačiť "

    ";

    vytlačiť "

    Kategória: $ kategórie [$ kategória]
    ";

    vytlačiť " ". $ riadok [" názov_stránky "]."

    vytlačiť "

    ";

    vytlačiť " http: // ".

    $ riadok ["url"]."
    ";

    vytlačiť "

    ";

    vytlačiť riadok $ ["popis"]."
    ";

    vytlačiť "


    Do tejto kategórie momentálne nepatria žiadne záložky. Prečo nie ty pridajte jednu?
    Návrat na index

    vytlačiť " Pridať záložku

    ";

    // zobrazenie záložky

    Nasledujúca stránka add_bookmark.php (Výpis 11.9) slúži na zadanie informácií o novom odkaze, ktorý sa má zahrnúť do databázy. Funkcia add_bookmark () sa volá na spracovanie používateľských údajov.

    Výpis 11.9. Add_bookmark.php program

    INCLUDE ("init.inc");

    <?=$title:?>

    if (! $ seeform):

    <1nput type="hidden" name="seenform" value="r">

    kategória:


    Názov siete:


    URL: (urobte nieobsahovať „http: //“!)


    Popis:


    add_bookmark ($ category, $ site_name, $ url, $ description);

    vytlačiť "

    Vaša záložka bola pridaná do úložiska.

    Kliknite tu pre návrat do indexu.

    ";

    Pri prvom načítaní stránky prehliadač zobrazí formulár (obrázok 11.5).

    Ryža. 11.5. Formulár vykreslený stránkou add_bookmark.php

    Ďalšia stránka, view_bookmark.php, jednoducho volá funkciu view_bookmark (). Kód pre túto stránku je uvedený vo výpise 11-10.

    Výpis 11.10. Program View_bookmark.php

    INCLUDE ("Listing11-8.php"); ?>

    <?=$title:?>

    view_bookmark (kategória $):

    Ryža. 11.6. Spúšťa sa stránka view_bookmark.php pre kategóriu jedál

    Zostáva len vytvoriť stránku, na ktorej používateľ vyberie odkazy zo zoznamu. Tento súbor som nazval index.php (Výpis 11.11).

    Vypisovanie 11.11. Program Index.php

    INCLUDE ("init.inc");

    alink = "# 808040">

    while (zoznam (kľúč $, hodnota) = každý (kategórie)):

    vytlačiť " $ hodnotu
    ";

    Pridať novú záložku

    Ak ponecháte pole kategórií $ s hodnotami uloženými v init.inc, odošle sa HTML vo výpise 11.12 do prehliadača ako výsledok výpisu 11.11.

    Výpis 11.12. Výstup vygenerovaný pri spustení index.php

    Vyberte kategóriu záložiek na zobrazenie:

    počítačov

    zábavu

    stolovanie

    životný štýl

    vláda

    cestovanie

    Pridať novú záložku

    výsledky

    Táto kapitola sa ukázala byť dosť dlhá a pre niektorých čitateľov sa môže ukázať ako najdôležitejšia v celej knihe. Nepochybne práca s databázami

    je jednou z najpozoruhodnejších funkcií jazyka PHP, pretože databázy výrazne rozširujú funkčnosť webových stránok. Konkrétne sme sa venovali nasledujúcim témam:

    • všeobecné informácie o SQL;
    • štandardná podpora databáz v PHP;
    • úvod do servera MySQL;
    • štandardné funkcie PHP pre prácu s MySQL;
    • implementácia najjednoduchšieho vyhľadávacieho nástroja;
    • triediace stoly;
    • všeobecné informácie o ODBC;
    • štandardné funkcie PHP pre prácu s ODBC;
    • interakcia s Microsoft Access v PHP;
    • uchovávanie užívateľských údajov na webovej stránke.

    Čitateľ, ktorý vyvíja veľké, skutočne dynamické webové stránky v PHP, sa bude musieť znova a znova vracať k téme databáz. Odporúčam vám pozorne si preštudovať nielen PHP dokumentáciu, ale aj ďalšie zdroje o databázovej technológii. V tejto oblasti, podobne ako v mnohých moderných technológiách, ani odborníci nemajú vždy čas sledovať všetky novinky.

    Ďalšia kapitola je venovaná šablónam, jednej z netriviálnych tém webového programovania. Používanie šablón v programovaní PHP poskytuje značné úspory času a úsilia pri práci na rozsiahlych webových stránkach.