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:
- pohodlnejšie;
- až 40-krát rýchlejšie;
- zvýšená bezpečnosť;
- 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:
Typ | Popis |
---|---|
NIE JE NULL | Vš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ÁR | Ná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
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
Výsledky vyplnenia tohto formulára sa prenesú na insert_book.php.
Príklad 2.2
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
Výsledky vyplnenia tohto formulára sa odošlú na adresu search_book.php.
Príklad 3.2
". ($ i + 1). $ riadok [" názov "]."
Alternatívna možnosť
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 "]."
Ako teda funguje architektúra webovej databázy:
- 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.
- Webový server prijme požiadavku na search_book.php, získa súbor a odovzdá ho PHP nástroju na spracovanie.
- PHP sa pripojí k serveru MySQL a odošle požiadavku.
- Server prijme požiadavku na databázu, spracuje ju a pošle výsledok (zoznam kníh) späť do PHP motora.
- PHP engine ukončí vykonávanie skriptu, naformátuje výsledok požiadavky do HTML. Výsledok HTML sa potom vráti na webový server.
- 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).
/* Переменные для соединения с базой данных */ $hostname = "localhost"; $username = "user"; $password = "password"; $dbName = "database"; /* создать соединение */ mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); /* выбрать базу данных. Если произойдет ошибка - вывести ее */ mysql_select_db($dbName) or die(mysql_error()); $query = "CREATE TABLE count (nn int(20))"; $res = mysql_query($query); $query = "INSERT INTO count VALUES("0")"; $res = mysql_query($query); $query = "CREATE TABLE count1 (nn int(20))"; $res = mysql_query($query); $query = "INSERT INTO count1 VALUES("0")"; $res = mysql_query($query); $query = "CREATE TABLE usvers (nn int(20), name VARCHAR(240), adres VARCHAR(240))"; $res = mysql_query($query); $query = "CREATE TABLE sobbit (nn int(20), usver VARCHAR(240), sobit VARCHAR(240), opsobit text(64000), kogda DATETIME)"; $res = mysql_query($query); /* Закрыть соединение */ mysql_close(); ?>
Registračný formulár užívateľa add.php
Zadajte užívateľské meno a heslo add1.php do databázy
/* Этот скрипт получает переменные из add.php */ /* Переменные для соединения с базой данных */ $hostname = "localhost"; $username = "user"; $password = "password"; $dbName = "database"; /* Таблица MySQL, в которой хранятся данные */ $userstable = "count"; /* создать соединение */ mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); /* выбрать базу данных. Если произойдет ошибка - вывести ее */ mysql_select_db($dbName) or die(mysql_error()); $name = mysql_real_escape_string($name); $adres = mysql_real_escape_string($adres); $query = "SELECT * FROM $userstable"; $res1 = mysql_query($query); while ($row = mysql_fetch_row($res1)) $nn=$row+1; $query = "UPDATE $userstable SET nn=$nn"; mysql_query($query) or die(mysql_error()); /* Таблица MySQL, в которой хранятся данные */ $userstable = "usvers"; /* создать соединение */ mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); /* выбрать базу данных. Если произойдет ошибка - вывести ее */ mysql_select_db($dbName) or die(mysql_error()); /* составить запрос для вставки информации о клиенте в таблицу */ $query = "INSERT INTO $userstable VALUES("$nn", "$name","$adres")"; /* Выполнить запрос. Если произойдет ошибка - вывести ее. */ mysql_query($query) or die(mysql_error()); echo "Информация о вас занесена в базу данных."; /* Закрыть соединение */ mysql_close(); ?>Vstúpiť
Zaregistrovali ste sa.
Teraz zadajte prihlasovacie meno a heslo formulár login.php
Zabudol si heslo
Po zadaní správneho loginu a hesla zobrazíme zoznam udalostí see.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"
";) / * Nakreslite formulár na zadanie novej udalosti * / echo"
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.
";) 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."; ?>
echo "Записи пользователя ".$name."
"; / * 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"
V platni máme tlačidlo Zmeniť otvorí sa zmena.php s formulárom na zmenu predtým zadaného záznamu.
";) inak (echo" "; echo"
";) echo"
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.
". $ 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.
Po kliknutí na tlačidlo „Odoslať“ sa spustí súbor forgot1.php, ktorý pošle heslo na e-mail používateľa.
";) 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
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:
- Vytvorte pripojenie k serveru MySQL. Ak pokus zlyhá, zobrazte príslušnú správu a ukončite proces.
- 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.
- Spracovať požiadavky na vybranú databázu (alebo databázy).
- 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ť "
identifikačné číslo produktu | Meno Produktu | Cena produktu | \ n
---|---|---|
$ id | \ n$ meno | \ n$ cena | \ n ";
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
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ť "
identifikačné číslo produktu | Meno Produktu |
Cena produktu | \ n
---|---|---|
". $ riadok [" prod_id "]." | \ n". $ riadok [" názov_produktu "]." | \ n". $ riadok [" prod_price "]." | \ n ";
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 $);
"
identifikačné číslo produktu | Meno Produktu | Cena produktu | \ n
---|---|---|
". $ riadok [" prod_id "]." | \ n". $ riadok [" názov_produktu "]." | \ n". $ riadok [" prod_price "]." | \ n ";
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)
"
Pomer strán 1440 x 900
Rozlíšenia obrazovky monitora
Kedy potrebujem aktualizovať firmvér
Ako premeniť smartfón s Androidom na bezpečnostnú kameru
Ako vyzerá čínska klávesnica (história a fotografie)