Funkcie PHP pre prácu s mysql. Komunikácia s MySQL databázami. Odstránenie starých záznamov

  • 20.06.2020

DBMS MySQL je jednou z mnohých databáz podporovaných PHP. Systém MySQL je distribuovaný bezplatne a má dostatok výkonu na riešenie skutočných problémov.

Krátky ú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 vzdialených počítačov.

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átumový a časový a reťazec. Každá z týchto kategórií je rozdelená do mnohých typov. Hlavné sú:


Každý stĺpec za typom údajov obsahuje ď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 viac ako maximálna hodnota, ktorá už v stĺpci existuje. Každá tabuľka môže mať najviac jedno takéto pole. Stĺpce s AUTO_INCREMENT musia byť indexované
PRIMÁRNY KĽÚČStĺpec je primárny kľúč tabuľky. Údaje v tomto stĺpci musia byť jedinečné. MySQL indexuje tento stĺpec automaticky
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ákladná" SADA ZNAKOV cp1251 COLLATE cp1251_bin

Vytvorte novú tabuľku vykonávané pomocou príkazu SQL VYTVORIŤ TABUĽKU. Napríklad tabuľka kníh pre kníhkupectvo by mala 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 pole automatickej aktualizácie 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);

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

INSERT INTO books (ISBN, autor, názov, cena, množstvo) VALUES ("5-8459-0184-7", "Zandstra Mat", "Teach Yourself PHP4 in 24 Hours", "129", "5");

Operátor sa používa na získanie údajov z tabuľky. VYBRAŤ. Získava údaje z databázy výberom riadkov, ktoré zodpovedajú zadaným kritériám vyhľadávania. Príkaz SELECT prichádza s veľkým množstvom možností a prípadov použitia.

Symbol * 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 Z 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štrukcia KDE. Napríklad, ak chcete vybrať dostupné lacné knihy o PHP, vytvorte dotaz:

VYBERTE * Z kníh WHERE cena % Zhoduje sa s ľubovoľným počtom znakov, dokonca aj s nulou
_ Zhoduje sa presne s jedným znakom

Aby boli riadky načítané dopytom uvedené v určitom poradí, používa sa konštrukcia 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ť Môžete tiež použiť viacero stĺpcov. Namiesto názvov stĺpcov môžete použiť ich sériové čísla:

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

Ak chcete zmeniť hodnoty predtým zaznamenané v tabuľke, použite príkaz AKTUALIZOVAŤ. Napríklad cena všetkých kníh sa zvýšila o 10 %:

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

Klauzula WHERE obmedzí UPDATE na určité riadky. Napríklad:

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

Ak chcete odstrániť riadky z databázy, použite príkaz VYMAZAŤ. Nepotrebné 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 tabuľku úplne odstrániť, 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 externému webovému rozhraniu.

Ak chcete získať prístup k databáze z webu pomocou PHP, musíte vykonať nasledujúce základné kroky:

  • Pripojenie k serveru MySQL.
  • Výber databázy.
  • Vykonanie databázového dotazu:
    • prídavok;
    • odstránenie;
    • zmeniť;
    • Vyhľadávanie;
    • triedenie.
  • Získanie výsledku dotazu.
  • Odpojenie 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í názov počítača = localhost , potom sa používateľské meno a heslo nevyžadujú. Ak sa PHP používa v kombinácii 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 všetko prebehlo dobre, vráťte ID pripojenia. Napríklad:

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

Po vytvorení pripojenia k serveru MySQL je potrebné vybrať databázu. Na to slúži funkcia 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) or die("Nedá sa otvoriť $db");

Pridávanie, odstraňovanie, úprava a výber údajov vyžaduje vytvorenie a spustenie dotazu 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ť údaje zadané používateľom do databázy.

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"]); $author = orezanie ($_POST["author"]); $title = orezanie ($_POST["title" ] ); $isbn = lomítka ($isbn); $author = lomítko ($author); $title = lomítko ($title) ; $db = "vzorka"; $link = mysql_connect(); ak (!$link) zomrie ("Nedá sa pripojiť k MySQL"); mysql_select_db ($db) alebo zomrieť ("Nedá sa otvoriť $db"); $query = "INSERT INTO books VALUES ("" .$isbn."", "".$author . "", "".$title."", "" .floatval($_POST["cena"])."", "".intval($_POST["množstvo"])."")"; $ result = mysql_query ($query); if ($result) 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ý bajt. Faktom je, že podľa požiadaviek syntaxe databázového dotazu musia byť takéto znaky uzavreté v úvodzovkách.

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

Všetky záznamy výsledkov dotazov 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 je 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ľadám:

Čo hľadáme:



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

Príklad 3.2

Vráťte sa prosím späť a dokončite písanie"); $searchterm = addlashes($searchterm); $link = mysql_pconnect(); if (!$link) die("Nedá sa pripojiť k MySQL"); $db = "vzorka"; mysql_select_db ($db) alebo zomrieť ("Nedá sa otvoriť $db"); $query = "VYBERTE * Z kníh WHERE " .$_POST["searchtype"]." ako "%".$searchterm."%""; $result = mysql_query ($query); $n = mysql_num_rows ($result); pre ($i=0; $i<$n; $i++) { $row = mysql_fetch_array($result); echo "

".($i+1). $row["title"]."



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

Alternatívna možnosť

Program na vyhľadávanie kníh (súbor search_book.php) Vráťte sa späť a dokončite písanie"); $searchterm = addlashes($searchterm); mysql_connect() alebo zomrieť ("Nedá sa pripojiť k MySQL"); mysql_select_db ("vzorka") alebo zomrieť ("Nedá sa otvoriť databáza" ); $ result = mysql_query ("SELECT * FROM books WHERE ".$_POST["searchtype"]." ako "%".$searchterm."%""); $i=1; while($row = mysql_fetch_array( $result) ) ( echo "

".($i++) .$row["title"]."
"; echo "Autor: ".$row["author"]."
"; echo "ISBN: ".$row["ISBN"]."
"; echo "Cena: ".$row["price"]."
"; 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. Napríklad používateľ pomocou formulára HTML hľadá všetky knihy PHP. Stránka spracovania formulára sa nazýva search_book.php.
  2. Webový server prijme požiadavku na search_book.php, získa tento 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 dokončí spustenie skriptu, naformátuje výsledok dotazu do HTML. Výsledok sa potom vráti ako HTML 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 meno = "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 viacero procesov, ktoré vytvárajú výberový dotaz v tej istej tabuľke, môžu vybrať rovnaký záznam súčasne.

Aby sa predišlo spomínanej situácii, je potrebné vykonať nielen SELECT dotaz, ale jeho rozšírenú verziu, o ktorej mnohí ani netušia: SELECT ... FOR UPDATE.

Preto pri vykonávaní tohto dotazu budú všetky dotknuté záznamy v databáze uzamknuté, kým sa nedokončí relácia s databázou alebo kým sa tieto záznamy neaktualizujú. Iný skript nebude môcť vybrať uzamknuté záznamy, kým nenastane jedna zo spomínaných podmienok.

Nie všetko je však také jednoduché. Musíte splniť ešte niekoľko podmienok. Po prvé, vaša tabuľka musí byť založená na architektúre InnoDB. V opačnom prípade blokovanie jednoducho nebude fungovať. Po druhé, pred vykonaním načítania musíte vypnúť automatické potvrdenie dopytu. Tie. inými slovami, automatické vykonanie požiadavky. Po zadaní požiadavky UPDATE budete musieť znova kontaktovať databázu a potvrdiť zmeny pomocou príkazu COMMIT:

PRÁCA S DATABÁZOU MySQL S NÁSTROJMI PHP

Prednáška. Pripravil Prokhorov V.S.


1. PRIPOJENIE PHP SKRIPTOV K MySQL tabuľkám

Zvážte najčastejšie používané funkcie, ktoré umožňujú prácu s databázou MySQL pomocou PHP.

Pri interakcii s PHP a MySQL program interaguje s DBMS prostredníctvom súboru funkcií.

1.1 Pripojenie k serveru. Funkcia mysql_connect

Pred prácou s databázou je potrebné nadviazať s ňou sieťové spojenie, ako aj autorizovať používateľa. To sa vykonáva pomocou funkcie mysql_connect().

zdroj mysql_connect(]])

Táto funkcia vytvorí sieťové pripojenie k databáze MySQL umiestnenej na hostiteľovi $server (predvolený je localhost, t.j. aktuálny počítač) a vráti ID otvoreného pripojenia. Všetky ďalšie práce sa vykonávajú s týmto identifikátorom. Všetky ostatné funkcie, ktoré berú tento identifikátor (handle) ako argument, budú jednoznačne identifikovať vybranú databázu. Pri registrácii sa zadáva používateľské meno $username a heslo $password (štandardne používateľské meno, pod ktorým sa spúšťa aktuálny proces - pri ladení skriptov: root a prázdne heslo):

$dbpasswd = ""; //Heslo

//Zobrazenie upozornenia

echo("

");

Premenné $dblocation, $dbuser a $dbpasswd ukladajú názov servera, meno používateľa a heslo.

1.2 Odpojenie od servera. Funkcia mysql_close

Pripojenie k MySQL - server sa automaticky zatvorí po skončení skriptu alebo pri zavolaní funkcie mysql_close

bool mysql_close()

Táto funkcia ukončí pripojenie k serveru MySQL a vráti hodnotu true, ak bola operácia úspešná, a v opačnom prípade vráti hodnotu false. Funkcia berie ako argument identifikátor pripojenia k databáze vrátený funkciou mysql_connect.

$dblocation = "localhost"; //Názov servera

$dbuser = "root"; //Používateľské meno

$dbpasswd = ""; //Heslo

//Pripojenie k databázovému serveru

//Pred volaním funkcie potlačte chybový výstup symbolom @

$dbcnx = @ mysql_connect($dblocation, $dbuser, $dbpasswd);

if (!$dbcnx) //Ak je handle 0, spojenie zlyhalo

//Zobrazenie upozornenia

echo("

Databázový server nie je momentálne dostupný, takže stránka sa nemôže správne zobraziť.");

if (mysql_close($dbcnx)) //zatvorte pripojenie

echo("Pripojenie k databáze ukončené");

echo("Nepodarilo sa mu dokončiť pripojenie");

1.3 Vytvorenie databázy. Funkcia CREATE DATABASE

Príkaz - vytvorte databázu je dostupný iba pre administrátora servera a na väčšine hostingov ho nie je možné vykonať:

CREATE DATABASE Názov databázy

Vytvorí novú databázu s názvom DatabaseName.

Príklad práce s touto funkciou:

@mysql_query("VYTVORIŤ DATABÁZU $dbname");

Odporúča sa všade používať apostrofy ("SQL - príkaz") ako oddeľovače reťazcov obsahujúcich SQL príkazy. To môže zabezpečiť, že žiadna premenná $ nebude náhodne interpolovaná (t. j. nahradená jej hodnotou) a zvýši sa bezpečnosť skriptov.

Príkaz na vytvorenie databázy CREATE DATABASE je dostupný iba pre superužívateľa a na väčšine hostingov ho nemôže vykonať jednoduchý používateľ. Je k dispozícii iba správcovi servera.

Pre experimenty vytvorte testovaciu databázu vykonaním SQL dotazu z príkazového riadku. Ak to chcete urobiť, musíte sa prihlásiť do systému MySQL a zadať príkazový riadok MySQL:

mysql> vytvorenie testovacej databázy databázy;

Potom by ste mali zadať:

mysql>použiť testovaciu bázu;

Vytvorená databáza:



1.4 Výber databázy. Funkcia mysql_select_db

Pred odoslaním prvého dotazu na MySQL server musíme špecifikovať, s ktorou databázou budeme pracovať. Na to je určená funkcia mysql_select_db:

bool mysql_select_db(reťazec $database_name [,zdroj $link_identifier])

Oznamuje PHP, že databáza $database_name bude použitá v budúcich operáciách na spojení $link_identifier.

Použitie tejto funkcie je ekvivalentné volaniu príkazu use v SQL dotaze, t.j. funkcia mysql_select_db vyberie databázu pre ďalšiu prácu a všetky nasledujúce SQL dotazy sa aplikujú na vybranú databázu. Funkcia berie ako argumenty názov vybranej databázy názov_databázy a zdroj deskriptora pripojenia. Funkcia vráti hodnotu true, ak bola operácia úspešná, a vráti hodnotu false v opačnom prípade:

//Kód pripojenia k databáze

if (! @mysql_select_db($dbname, $dbcnx))

//Zobrazenie upozornenia

echo("

Databáza momentálne nie je dostupná, preto sa stránka nedá správne zobraziť.");

1.5 Riešenie chýb

Ak sa pri práci s MySQL vyskytnú chyby (napríklad zátvorky v dotaze nie sú vyvážené alebo nie je dostatok parametrov), chybové hlásenie a jeho číslo je možné získať pomocou nasledujúcich dvoch funkcií.

Je dôležité používať tieto funkcie opatrne a včas, pretože inak môže byť ladenie skriptov zložitejšie.

● Funkcia:

int mysql_errno()

vráti číslo poslednej zaznamenanej chyby. $link_identifier môžete vynechať, ak bolo počas behu skriptu vytvorené iba jedno pripojenie.

● Funkcia:

reťazec mysql_error()

vráti nie číslo, ale reťazec obsahujúci text chybovej správy. Je to užitočné na účely ladenia. Mysql_error sa zvyčajne používa v spojení s konštruktom or die(), napríklad:

@mysql_connect("localhost", "user", "password")

or die("Chyba pri pripájaní k databáze: ".mysql_error());

Operátor @ slúži ako obvykle na potlačenie štandardného varovania, ktoré sa môže vyskytnúť v prípade chyby.

V posledných verziách PHP sa varovania vo funkciách MySQL štandardne nezaprotokolujú.

1.6 Automatizácia pripojenia k MySQL. Súbor ( config.php )

Zvyčajne je na stránke niekoľko skriptov, ktoré potrebujú prístup k rovnakej databáze.

Odporúča sa, aby bol kód zodpovedný za pripojenie k MySQL oddelený do samostatného súboru a potom pripojený pomocou funkcie include k potrebným skriptom.

Funkcie na pripojenie, výber a vytvorenie databázy má zmysel umiestniť do rovnakého súboru (config.php), kde sú deklarované premenné s názvom servera $dblocation, používateľským menom $dbuser, heslom $dbpasswd a názvom databázy $dbname:

výpis config.php:

//config.php kód súboru obsahujúceho parametre pre pripojenie k serveru a výber databázy

//vytlačí prehliadaču chybové hlásenia o pripojení

$dblocation = "localhost"; //Názov servera

$dbname = "vložiť názov databázy" //Názov databázy: vytvorený alebo už existujúci

$dbuser = "root"; //Užívateľské meno databázy

$dbpasswd = ""; //Heslo

//Pripojenie k databázovému serveru

//Pred volaním funkcie potlačte chybový výstup symbolom @

_connect($dblocation,$dbuser,$dbpasswd);

if (!$dbcnx) //Ak je handle 0, spojenie s databázovým serverom nie je vytvorené

//Zobrazenie upozornenia

echo("

Databázový server nie je momentálne dostupný, takže stránka sa nemôže správne zobraziť.

");

//Vytvoriť databázu $dbname - toto môže urobiť iba superužívateľ

//Ak databáza už existuje, dôjde k nezávažnej chybe

@mysql_query("VYTVORIŤ DATABÁZU, ak $dbname');

//Kód pripojenia k databáze: jednoznačný výber novovytvorenej databázy alebo existujúcej databázy

//Pred volaním funkcie potlačte chybový výstup symbolom @

ak( _select_db($dbname, $dbcnx)) //Ak je handle 0, pripojenie k databáze nie je vytvorené

//Zobrazenie upozornenia

echo("

Databáza momentálne nie je dostupná, preto sa stránka nedá správne zobraziť.

");

// Malá pomocná funkcia, ktorá vytlačí správu

//chyba v prípade chyby databázového dotazu

function puterror($message)

echo("");



2. VYKONÁVANIE DOTAZU DO DATABÁZY

2.1 Vytvorenie tabuľky. Funkcia VYTVORIŤ TABUĽKU:

CREATE TABLE Názov tabuľky (typ FieldName, FieldName type,)

Tento príkaz vytvorí novú tabuľku v databáze so stĺpcami (poliami) definovanými ich názvami (FieldName) a špecifikovanými typmi. Po vytvorení tabuľky bude možné do nej pridávať záznamy pozostávajúce z polí uvedených v tomto príkaze.

Výpis test_11.php. Program, ktorý vytvorí novú tabuľku v databáze:

include "config.php";//Pripojte sa k serveru a vyberte databázu

mysql_query("VYTVORIŤ TABUĽKU, ak neexistujú ľudia

id INT AUTO_INCREMENT PRIMARY KEY,

or die("Chyba MySQL: ".mysql_error());



Tento skript vytvorí novú tabuľku ľudí s dvoma poľami. Prvé pole je typu INT (celé číslo) a názov je id. Druhým je typ TEXT (textový reťazec) a názov meno.

Ak tabuľka existuje, konštrukcia or die() bude fungovať.

Voliteľná klauzula if not exists, ak existuje, hovorí serveru MySQL, že by nemal generovať chybové hlásenie, ak tabuľka so zadaným názvom už v databáze existuje.

Spravil som si pre seba jednoduchú databázu udalostí v PHP s pripomienkou na e-mail. Poslúži ako príklad pre prácu v PHP s databázou.

Databáza je samozrejme MySQL.

Tabuľky je možné vytvárať manuálne cez phpMyAdmin, ako je popísané v príklade vytvorenia prieskumu PHP tu, ale tu vytvorím značky pomocou dopytov.

Súbor na vytváranie tabuliek je create.php (spustíme ho 1x, po vytvorení tabuliek ho vymažeme).

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

Email:

heslo:



Do databázy zadáme login a heslo add1.php

Vstúpiť

Registrovaný.

Teraz formulár na zadanie prihlasovacieho mena a hesla login.php

Pripomenutie udalosti v PHP

Email:

heslo:

registrácia

Pripomenúť heslo

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

Pripomenutie udalosti v PHP
"; ) else ( echo "Príspevky používateľa ".$name."

"; /* MySQL tabuľka, kde sú uložené údaje */ $userstable = "sobbit"; /* vytvorenie pripojenia */ mysql_connect($hostname,$username,$password) OR DIE("Nedá sa vytvoriť pripojenie"); /* výber databázy Ak sa vyskytne chyba, zobrazte ju */ mysql_select_db($dbName) alebo die(mysql_error()); $query = "SELECT * FROM $userstable WHERE usver = "".$name."" "; $res = mysql_query ($query) or die(mysql_error()); /*získanie riadkov z databázy MySQL */ while ($row=mysql_fetch_array($res)) ( echo $row["sobit"]." ".$row[ "opsobit "]." ".$row["kogda"]; /* Nakreslite tabuľku 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 to stane:
"; echo"

"; echo"

"; echo"

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

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

Pripomenutie udalosti v PHP
"; ) else ( /* MySQL tabuľka, kde sú uložené údaje */ $userstable = "count1"; /* vytvorenie pripojenia */ mysql_connect($hostname,$username,$password) OR DIE("Nedá sa vytvoriť pripojenie ") ; /* vyberte databázu, ak sa vyskytne chyba, zobrazte ju */ mysql_select_db($dbName) or die(mysql_error()); $name = mysql_real_escape_string($name); $asobit = mysql_real_escape_string($asobit); $aopsobit = mysql_real_escape_string ($aopsobit); $akogda = mysql_real_escape_string($akogda); $query = "SELECT * FROM $userstable"; $res1 = mysql_query($query); while ($row = mysql_fetch_row($res1)) $nn=$ riadok +1; $query = "AKTUALIZÁCIA $userstable SET nn=$nn"; mysql_query($query) or die(mysql_error()); /* MySQL tabuľka, kde sú uložené dáta */ $userstable = "sobbit"; /* vytvoriť pripojenie */ mysql_connect($hostname,$username,$password) OR DIE("Nedá sa vytvoriť pripojenie"); /* vybrať databázu. Ak sa vyskytne chyba, zobrazte ju */ mysql_select_db($dbName) alebo zomriete (mysql_error()); /* požiadajte o vloženie informácie o udalosti do tabuľky */ $query = "INSERT INTO $userstable VALUES("$nn", "$name","$asobit","$aopsobit","$akogda")"; /* Vykonať požiadavku. Ak sa vyskytne chyba, vypíšte ju. */ mysql_query($query) or die(mysql_error()); echo "Do databázy boli pridané informácie o udalosti."; ?>


"; /* vytvorte pripojenie */ mysql_connect($hostname,$username,$password) OR DIE("Nedá sa vytvoriť pripojenie "); /* vyberte databázu. Ak sa vyskytne chyba, vytlačte ju */ mysql_select_db($dbName) or die(mysql_error()); $query = "SELECT * FROM $userstable WHERE usver = "".$name."" "; $res = mysql_query($query) or die(mysql_error()); while ($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:

Kedy sa to stane:
"; echo"

"; echo"

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

V tabuľke tlačidlo Zmeniť otvorí súbor change.php s formulárom na zmenu záznamu zadaného skôr.

Pripomenutie udalosti v PHP
";) inak (echo"

"; echo"

"; echo"

"; echo"

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

Pripomenutie udalosti v PHP
"; ) else ( /* MySQL tabuľka, kde sú uložené dáta */ /* vytvoriť pripojenie */ mysql_connect($názov hostiteľa,$používateľské meno,$heslo) OR DIE("Nedá sa vytvoriť pripojenie"); /* vyberte databázu. Ak nastane chyba, vypíšte ju */ mysql_select_db($dbName) alebo die(mysql_error()); $name = mysql_real_escape_string($name); $asobit = mysql_real_escape_string($asobit); $aopsobit = mysqda_real_escape_string; $gda_real_escape_string; $gda = mysql_real_escape_string($akogda); /* MySQL tabuľka, kde sú uložené údaje */ $userstable = "sobbit"; /* vytvorenie pripojenia */ mysql_connect($hostname,$username,$password) OR DIE("Nedá sa vytvoriť pripojenie "); /* vyberte databázu. Ak sa vyskytne chyba, zobrazte ju */ mysql_select_db($dbName) alebo die(mysql_error()); /* vytvorte dotaz na zmenu informácií v tabuľke */ $query = "UPDATE $ usertable SET sobit "".$asobit."",opsobit="".$aopsobit.","kogda="".$akogda."" WHERE nn=$ann"; /* Spustite dotaz. Ak sa vyskytne chyba nastane, vypíšte ho. */ mysql_query($query ) alebo zomrieť(mysql_error()); echo "Informácie o udalosti zmenené."; ?>


"; /* vytvorte pripojenie */ mysql_connect($hostname,$username,$password) OR DIE("Nedá sa vytvoriť pripojenie "); /* vyberte databázu. Ak sa vyskytne chyba, vytlačte ju */ mysql_select_db($dbName) or die(mysql_error()); $query = "SELECT * FROM $userstable WHERE usver = "".$name."" "; //$query = "SELECT * FROM $userstable"; $res = mysql_query($query ) alebo die(mysql_error()); while ($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"

Keď sa to stalo:

"; echo"

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

Opäť sa zobrazí tabuľka so zmenenou udalosťou a vstupný formulár.
Súbor prover.php, ktorý je umiestnený v crone, včas skontroluje databázu pre expirované udalosti, ak ho nájde, pošle užívateľovi upomienku na e-mail.

Pripomenutie udalosti v PHP ".$row["kedy"]."
Pozor!
Tento list bol odoslaný robota A nemusíte odpovedať!"; $headers = "Od: ".$riadok["usver"]."<".$row["usver"].">\r\nTyp obsahu: text/html; charset=windows-1251 \r\n"; mail ($to, $predmet, $správa, $hlavičky); ) else ( ) ) /* Zatvoriť spojenie */ mysql_close(); ?>

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

Pripomenutie udalosti PHP /title> <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="poslať"> </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>Pripomenutie udalosti v PHP
"; ) else ( $to = $riadok["meno"]; $subject = "Obnovenie hesla pre ".$row["meno"]; $message = "Prihlásenie: ".$row["meno"]."
heslo:".$row["adresa"]; $headers = "Od: ".$row["meno"]."<".$row["name"].">\r\nTyp obsahu: text/html; charset=windows-1251 \r\n"; mail ($to, $predmet, $správa, $hlavičky); echo "Informácie odoslané na zadanú adresu."; ) /* Zatvoriť spojenie */ mysql_close(); ?> Prihlásiť sa

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

Zoznam udalostí je navyše možné usporiadať vo forme tabletu, do tabuľky môžete pridať aj tlačidlo „Vymazať“ na vymazanie riadkov, umožniť „uzavretie“ udalostí kliknutím na odkaz ihneď v pripomenutí urobte nejaký druh šifrovania hesla, 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 e-mailom pripomínať udalosti online.

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 sa vo veľkej miere spoliehajú na spoľahlivosť databáz, ktoré uchovávajú obrovské množstvo informácií. Samozrejme, podpora databáz nie je len pre obrovské korporácie – weboví programátori majú k dispozícii niekoľko výkonných databázových implementácií za relatívne nízku cenu (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ístupovými právami k informáciám sa riešia pomocou nástrojov na kontrolu privilégií, 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 DBMS používanom v PHP (http://www.mysql.com). Príklad MySQL ukáže, ako PHP načítava a aktualizuje dáta v databáze; pozrieme sa na základné vyhľadávacie a triediace nástroje používané v mnohých webových aplikáciách. Potom prejdeme k podpore PHP pre ODBC (Open Data Base Connectivity), čo je všeobecné rozhranie, ktoré možno použiť na pripojenie k rôznym DBMS súčasne. Podpora ODBC v PHP bude demonštrovaná 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 obľúbených stránkach. Keď sú do katalógu zahrnuté 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. Aby sme mohli prejsť na príklady práce s databázami, je potrebné mať aspoň všeobecnú predstavu o tom, ako SQL funguje.

Č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 nástroj rozhrania na vykonávanie rôznych operácií s databázami, ktorý používateľovi poskytuje štandardnú sadu príkazov. Možnosti SQL sa neobmedzujú len na získavanie údajov z databázy. SQL poskytuje 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 na výstup;
  • spracovanie dát
  • -- vkladať, aktualizovať a mazať informácie;
  • Riadenie prístupu
  • -- možnosť povoliť / zakázať vzorkovanie, vkladanie, aktualizáciu a mazanie údajov na úrovni jednotlivých používateľov;
  • kontrola integrity údajov
  • -- Zachovať štruktúru údajov, keď sa vyskytnú problémy, ako sú súbežné aktualizácie alebo zlyhania systému.

    Všimnite si, že definícia SQL hovorila, že jazyk bol navrhnutý tak, aby s ním pracoval vzťahový databázy. Relačné DBMS organizujú údaje do súboru vzájomne prepojených tabuliek. Vzťahy medzi tabuľkami sú implementované ako odkazy na údaje v iných tabuľkách. tabuľky možno si predstaviť ako dvojrozmerné pole, v ktorom je umiestnenie každého prvku charakterizované určitý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 možné vidieť na 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 danej tabuľky) názov. Všimnite si vzťah medzi zákazníkmi a tabuľkami objednávok, označený šípkou. Informácie o objednávke obsahujú 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. Tento vzťah vytvára pole prod_id, v ktorom je uložený identifikátor produktu objednaného týmto zákazníkom (určený poľom custjd). Prítomnosť týchto vzťahov uľahčuje odkazovanie na úplné údaje o zákazníkoch a produktoch pomocou jednoduchých identifikátorov. Správne organizovaná databáza sa zmení na výkonný nástroj na efektívne organizovanie a ukladanie údajov s minimálnou redundanciou. Majte túto databázu na pamäti, v ďalších príkladoch na ňu budem často odkazovať.

    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 napríklad 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? V súhrne príkaz vyzerá takto:

    SELECT názov_poľa FROM názov_tabuľky [podmienka WHERE]

    Hranaté zátvorky znamenajú, že posledná časť príkazu je voliteľná. Ak chcete napríklad získať e-mailové adresy všetkých zákazníkov v tabuľke Zákazníci, stačí spustiť 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 druhov príkazov SQL a ich úplný popis presahuje rámec tejto knihy. Na túto tému by sa dala napísať samostatná kniha! Snažil som sa uistiť, že príkazy SQL použité v príkladoch sú relatívne jednoduché, ale dostatočne realistické. Na webe je veľa výukových informácií a zdrojov o SQL. Niektoré odkazy sú uvedené na konci tejto časti.

    Príkazy SQL nie je potrebné písať veľkými písmenami. Preferujem však tento zápis, pretože pomáha rozlišovať medzi komponentmi požiadavky.

    Keďže čítate túto knihu, pravdepodobne sa pýtate, ako fungujú databázy na webe? Spravidla najskôr s niektorými

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

    Dodatočné zdroje

    Nižšie sú uvedené niektoré internetové zdroje o SQL. 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áz v 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 každý existujúci databázový server, 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á (napríklad Oracle), až po tie, o ktorých mnohí nikdy ani nepočuli. Morálka je taká, že ak budete používať seriózny DBMS na ukladanie informácií distribuovaných cez web, je pravdepodobné, že databáza je podporovaná PHP. Podpora databázy v PHP je reprezentovaná súborom štandardných funkcií pre pripojenie k databáze, spracovanie dotazov a prerušenie spojenia.

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

    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čí teda dodržať správnu inštaláciu balíka MySQL Databáza 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 na webovej stránke MySQL (http://www.mysql.com).

    Najnovšiu verziu MySQL je možné akceptovať z ľubovoľnej zrkadlovej lokality. Úplný zoznam zrkadlových stránok je dostupný 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 verzia 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 vhodnú verziu pre váš operačný systém. 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 niektoré konkrétne OS.

    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 hrá mimoriadne dôležitú úlohu v bezpečnosti vašich databáz, takže pred spustením lokality v produkčnom režime musíte plne porozumieť systému práv.

    Tabuľky privilégií MySQL vyzerajú na prvý pohľad odstrašujúco, ale keď im správne porozumiete, ďalšia údržba sa stane veľmi jednoduchou úlohou. Úplný popis tabuliek privilégií presahuje rámec tejto knihy. Na webe je však veľa zdrojov, ktoré sú navrhnuté tak, aby pomohli novým 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! Práve tejto téme je venovaná ďalšia časť. Začnime tým, že sa pozrieme na podporu MySQL v PHP.

    Š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é uľahčujú komunikáciu PHP skriptov s MySQL serverom. 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 dotazov môžete otvoriť viacero 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 vyskúšať sami, vytvorte si tieto tabuľky alebo skopírujte stránku so štruktúrou, aby ste nemuseli stále listovať knihou.

    Začnime teda úplne od začiatku – teda pripojením sa k MySQL serveru.

    Funkcia mysql_connect() nadviaže spojenie so serverom MySQL 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//do/zásuvky] [, používateľské meno reťazca] [, heslo reťazca])

    Parametru hostiteľa sa odovzdá 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. Všimnite si, že všetky parametre sú voliteľné, pretože grantové tabuľky možno nakonfigurovať tak, aby umožňovali pripojenie bez overenia. Ak parameter hostiteľa nie je zadaný, mysql_connect() sa pokúsi pripojiť k lokálnemu hostiteľovi.

    Príklad otvorenia pripojenia k MySQL:

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

    V tomto príklade je localhost názov počítača, web je meno používateľa a 4tf9zzzf je heslo. Znak @ pred volaním funkcie mysql_connect() potlačí všetky chybové hlásenia, ktoré sa vyvolajú pri neúspešnom pokuse o pripojenie – sú nahradené správou špecifikovanou pri volaní die(). Všimnite si, že hodnota vrátená z volania rnysql_connect() sa v tomto príklade nepoužije. Ak program používa iba jedno pripojenie k serveru MySQL, je to celkom normálne. Ak však program vytvorí pripojenia k viacerým serverom MySQL na rôznych hostiteľoch, ID pripojenia vrátené volaním mysql_connect() by sa malo uložiť, aby nasmerovalo následné príkazy na správny server MySQL. Príklad:

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

    MySQL server!");

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

    na server MySQL!");

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

    Funkcia 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() na šetrenie systémových zdrojov. Typy parametrov a návratová hodnota funkcie mysql_pconnect() sú ú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 definuje vybranú databázu, identifikátor

    ktorý je vrátený funkciou mysql_select_db(). Poznámka: parameter

    connection_id je voliteľné len pre jedno otvorené pripojenie

    MySQL server. Ak existuje viacero otvorených pripojení, táto možnosť

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

    or die("Nepodarilo sa pripojiť k serveru MySQL!");

    Ak je v programe vybratá len jedna databáza, nie je potrebné ukladať jej ID. Keď je však vybratých viacero databáz, vrátené ID sa zachovajú, aby ste sa pri spracovaní požiadavky mohli odvolávať na správnu databázu. Ak nie je zadaný žiadny identifikátor, použije sa posledná vybraná databáza.

    Po dokončení práce so serverom MySQL je potrebné spojenie ukončiť. Funkcia mysql_close() zatvorí spojenie, špecifikované voliteľným parametrom. Ak parameter nie je nastavený, funkcia mysql_close() uzavrie posledné otvorené pripojenie. Syntax funkcie mysql_close() je:

    int mysql_close()

    Príklad použitia mysql_close():

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

    or die("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db("spoločnosť") or die("Nepodarilo sa vybrať databázu spoločnosti!"); tlačiť "Ste pripojení k databáze MySQL!";

    V tomto príklade nemusíte zadať ID 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 na dopytovanie databáz.

    údajov. Syntax funkcie mysql_query() je:

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

    Parameter dotazu obsahuje text dotazu v SQL. Požiadavka sa odošle buď pripojeniu špecifikovanému voliteľným parametrom connection_id, alebo, ak parameter neexistuje, poslednému otvorenému pripojeniu.

    Neskúsení programátori sa často mylne domnievajú, že funkcia mysql_query() vracia výsledky spracovania dotazu. To nie je pravda - v závislosti od typu dotazu môže volanie mysql_query() viesť k rôznym dôsledkom. Po úspešnom dokončení 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 mysql_query() až po opísaní funkcií mysql_result() a mysql_affected_rows().

    Ak sa obávate, že pri spracovaní dotazov sa spotrebuje 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.

    mysqlaffed_rows()

    V mnohých situáciách chcete vedieť počet záznamov zahrnutých v dotaze SQL pomocou príkazov 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_id 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")

    or die("Nepodarilo sa pripojiť k serveru MySQL!");

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

    // Vytvorte požiadavku

    $query = "AKTUALIZÁCIA SADA produktov prod_name = \"cantaloupe\"

    WHERE prod_id = \"10001pr\";

    // Vykonať požiadavku

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

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

    Spustenie tohto úryvku vytvorí nasledujúci výstup:

    Celkový počet aktualizovaných riadkov: 1

    Funkcia mysql_affected_rows() nefunguje s dotazmi založenými na príkaze SELECT. Funkcia mysql_num_rows() opísaná v ďalšej časti sa používa na určenie počtu riadkov vrátených volaním SELECT.

    V jednej konkrétnej situácii funkcia mysql_affected_rows() zlyhá. Pri vykonávaní príkazu DELETE bez klauzuly WHERE funkcia mysql_affected_rows() vždy vráti 0.

    mysql_num_rows()

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

    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")

    or die("Nepodarilo sa pripojiť k serveru MySQL!");

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

    // Vyberte všetky produkty, ktorých názvy začínajú na „p“

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

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

    Keďže tabuľka obsahuje iba jeden produkt, ktorého názov začína písmenom 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 mysql_query() (pri vykonávaní dotazu pomocou príkazu SELECT) na získanie množiny údajov. Syntax funkcie mysql_resu1t():

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

    Parameter result_id je hodnota vrátená funkciou mysql_query(). Parameter záznamu odkazuje na špecifický záznam v množine údajov identifikovaný pomocou result_id. Nakoniec vo voliteľnom parametri možno zadať pole:

    • offset poľa v tabuľke;
    • názov poľa;
    • názov poľa vo formáte field_name_tdblitz_name.

    Výpis 11.1 používa databázu znázornenú na obrázku 11.1. 11.1.

    Výpis 11.1. Výber a formátovanie údajov v databáze MySQL

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

    or die("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);

    tlačiť"

    \n";

    tlačiť"

    \n \n\n";

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

    $id = mysql_result($vysledok. $x. "id_produktu");

    $name = mysql_result($vysledok, $x, "nazov_produktu");

    $cena = mysql_result($vysledok. $x, "cena_produktu");

    tlačiť"

    \n";

    tlačiť"

    \n \n \n";

    tlačiť"

    \n";

    tlačiť"

    identifikačné číslo produktuMeno Produktucena produktu
    $id$name$ cena
    ";

    Ako výsledok spustenia tohto príkladu s údajmi znázornenými na obr. 11.1 sa získa nasledujúci výsledok:

    Výpis 11.2. Výsledok 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 užitočná na prácu s relatívne malými množinami údajov, existujú však aj iné funkcie, ktoré sú 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 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 (int výsledok)

    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 list() a mysql_fetch_row().

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

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

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

    $dotaz = "VYBERTE * Z produktov";

    $vysledok = mysql_query($dotaz);

    tlačiť"

    \n";

    tlačiť"

    \n \n\n";

    while ($row = mysql_fetch_array($result)) :

    tlačiť"

    \n":

    tlačiť"

    \n \n \n";

    tlačiť"

    \n";

    tlačiť"

    identifikačné číslo produktuMeno Produktu

    cena produktu

    ".$row["prod_id"]."".$row["názov_výrobku"]."

    " .$row["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()

    Funkcia mysql_fetch_array() je podobná funkcii mysql_fetch_row(), avšak štandardne sú hodnoty polí záznamu uložené v asociatívne pole. Môžete si však vybrať typ indexovania (asociatívne, číselné alebo kombinované). Syntax funkcie mysql_fetch_array():

    pole mysql_fetch_array (int result id [, index_type])

    Parameter result_id je hodnota vrátená funkciou 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 -- mysql_fetch_array() vráti pole číselne indexované;
    • MYSQL_BOTH -- K poliam vráteného záznamu je možné pristupovať pomocou číselných aj asociatívnych indexov.

    Výpis 11.4 obsahuje inú verziu kódu vo výpisoch 11.1 a 11.3. Tentokrát sa použije funkcia mysql_fetch_array(), ktorá vráti asociatívne pole polí.

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

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

    or die("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db("spoločnosť")

    or die("Nepodarilo sa vybrať databázu produktov!");

    $dotaz = "VYBERTE * Z produktov";

    $vysledok = mysql_query($dotaz);

    "

    \n";

    tlačiť"

    \n \n\n";

    tlačiť"

    \n";

    tlačiť"

    \n \n \n" ;

    tlačiť"

    \n";

    tlačiť"

    identifikačné číslo produktuMeno Produktu cena produktu
    ".$row["prod_id"]."".$row["názov_výrobku"]."" .$row["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 jednoduchý vyhľadávač. Tento príklad demonštruje použitie formulárov HTML (pozri predchádzajúcu kapitolu) na získanie údajov, ktoré sa potom použijú na získanie informácií z databázy.

    Príklad jednoduchého vyhľadávača v PHP

    Všetci sme na webe použili vyhľadávače viac ako raz, ale ako fungujú vyhľadávače? 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 zhody).

    Vyhľadávač zobrazený vo výpise 11.5 slúži na vyhľadávanie informácií o zákazníkoch. Používateľ do formulára zadá kľúčové slovo a vyberie kategóriu (meno zákazníka, IČO alebo e-mailovú adresu), v ktorej bude hľadať. Ak užívateľom zadaný názov, identifikátor alebo adresa existuje, vyhľadávací nástroj načíta zvyšok atribútov z databázy. Potom sa podľa ID kupujúceho vyberie z tabuľky objednávok

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

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

    "

    Kľúčové slová:


    Zameranie vyhľadávania:


    ,

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

    if (Sseenform != "y") :

    vytlač $formulár; inak:

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

    or die("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 = "$keyword"";

    $vysledok = mysql_query($dotaz);

    // Ak sa nenájde žiadna zhoda, zobrazí sa správa

    // a znova vykreslite formulár

    if (mysql_num_rows($vysledok) == 0) :

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

    // Nájdené zhody. Formát a výstup výsledkov, inak:

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

    zoznam($id, $meno, $email) = mysql_fetch_row($vysledok);

    tlačiť"

    Informácie pre zákazníka:

    ";

    tlačiť" Názov:$name
    ";

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

    tlačiť" Email: $email
    ";

    tlačiť"

    História objednávok:

    ";

    // Zostavte a spustite dotaz podľa tabuľky "objednávky".

    $query = "VYBERTE ID_objednávky, ID_produktu, množstvo

    FROM orders WHERE cust_id = "$id"

    OBJEDNAŤ PODĽA množstva DESC";

    $vysledok = mysql_query($query):

    tlačiť"

    ";

    tlačiť"

    ";

    // Formátovanie a zobrazenie nájdených záznamov.

    while (zoznam($id_objednavky, $prod_id, $množstvo) = mysql_fetch_row($vysledok));

    tlačiť"

    ";

    tlačiť"

    ";

    tlačiť"

    ";

    tlačiť"

    0 ID objednávkyidentifikačné číslo produktumnožstvo
    $order_id$prod_id$množ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, zvažovali sme najjednoduchšiu implementáciu vyhľadávacieho nástroja. Existuje pomerne veľa ď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é načítanie záznamov s podobnými kľúčovými slovami. Skúste využiť svoju tvorivú fantáziu a zrealizujte ich sami.

    Tabuľkové triedenie

    Pri extrakcii údajov z databázy je potrebné zabezpečiť možnosť ich triedenia podľa rôznych kritérií. Ako príklad si vezmite výsledky zobrazené naším vyhľadávačom – za nadpisom História objednávok venujte zvláštnu pozornosť: (História objednávok). Povedzme, že zoznam je veľmi dlhý a chcete údaje zoradiť podľa ID produktu (alebo ID objednávky). Pre lepšie pochopenie toho, čo je v stávke, odporúčam navštíviť jednu z mojich obľúbených stránok, http://download.cnet.com. Ak počas prehliadania programov v určitej kategórii kliknete na hlavičku stĺpca (názov, dátum odoslania, počet stiahnutí alebo veľkosť súboru), zoznam sa automaticky zoradí podľa obsahu dané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 objednávky (pole množstvo). Avšak kliknutie na ľubovoľnú hlavičku tabuľky spôsobí opätovné načítanie stránky s tabuľkou zoradenou podľa zadaného stĺpca.

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

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

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

    or die("Nepodarilo sa pripojiť k serveru MySQL!");

    @mysql_select_db("spoločnosť")

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

    // Ak nie je nastavená hodnota premennej $key, predvolená hodnota

    // použite hodnotu "quantity" if (! isset($key)) :

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

    // Vytvorte a spustite požiadavku.

    // Vybrané údaje sú zoradené podľa stĺpca $key v zostupnom poradí

    $query = "SELECT order_id, cust_id, prod_id, number FROM orders ORDER BY $key DESC" $result = mysql_query($query);

    // Vytvorenie hlavičky tabuľky

    tlačiť"

    ";

    tlačiť"

    ";

    // Formátovanie a výstup každého riadku tabuľky

    kým (zoznam($order_id,$cust_id,$prod_id, $množstvo)

    mysql_fetch_row($result)) :

    tlačiť"

    ";

    tlačiť"

    ";

    tlačiť"

    ";

    // Koniec tabuľky

    tlač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 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

    Všimnite si, že nadpisy tabuľky sú hypertextové odkazy. Keďže predvolené triedenie je podľa poľa množstva, záznamy sú zoradené v zostupnom poradí podľa posledného stĺpca. Ak kliknete na odkaz Order_ID, stránka sa znova načíta, no tentoraz sú záznamy zoradené podľa ID objednávky v zostupnom poradí. 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ých kritérií – vzostupne, zostupne alebo zoskupovať záznamy.

    Týmto sa končí náš úvod do MySQL. Upozorňujeme, že táto kapitola ani zďaleka nevyčerpáva všetko, čo potrebujete 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 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ú „navrchu“ existujúcej klientskej databázovej infraštruktúry. ODBC (skratka pre "Open Database Connectivity", teda "otvorená databázová architektúra") 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 opakovane 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 tento 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é populárne 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
    • MySQL ODBC Drivers (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 ku konkrétnym balíkom. Napriek všetkým rozdielom je však použitie týchto ovládačov v PHP bezproblémové.

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

    Podpora PHP ODBC

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

    • Adabas D;
    • IODBC;
    • IBM DB2;
    • pevný;
    • Sybase SQL Anywhere.

    Upozorňujeme, že pri práci s uvedeným DBMS sa v skutočnosti nepoužíva štandardný mechanizmus ODBC. Na interakciu s databázami sa používajú len bežné funkcie ODBC podporované v PHP. Je to praktické, pretože ak prejdete na iný DBMS kompatibilný s ODBC (alebo DBMS zo zoznamu vyššie), všetky vaše skripty budú fungovať správne.

    Podpora ODBC je zabudovaná do PHP, takže až na pár výnimiek nemusíte veľa konfigurovať na mieru.

    V súčasnosti existuje asi 40 bežných funkcií ODBC. Na získanie informácií z databázy kompatibilnej s ODBC však stačí niekoľko funkcií opí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ť vyhľadávať databázu kompatibilnú s ODBC, musíte s ňou najprv vytvoriť spojenie. Spojenie vytvorí funkcia ocbc_connect(). Syntax funkcie odbc_connect():

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

    Parameter datasource určuje databázu kompatibilnú s ODBC, s ktorou sa pokúšate komunikovať. Parametre používateľského mena a hesla, ako môžete hádať, prenášajú používateľské meno a heslo potrebné na pripojenie k zdroju údajov. Voliteľný parameter kurzor_typ je určený na riešenie problémov, ktoré vznikajú pri práci s niektorými ovládačmi ODBC. 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ť túto možnosť, ale stále je to niečo, čo treba mať na pamäti v prípade, že váš balík ODBC nedokáže spracovať konkrétnu požiadavku.

    Použitie odbc_connect() v programe je jednoduché. 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 pripojenie predtým otvorené, a ak áno, používa predchádzajúce pripojenie.

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

    void odbc_close()

    V parametri connection_id sa odovzdáva identifikátor otvoreného spojenia. Zvážte malý príklad:

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

    or die("Nepodarilo sa pripojiť k databáze ODBC");

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

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

    int odbc_prepare (int connection_id, reťazcový dotaz)

    Parameter connection_id je identifikátor pripojenia vrátený funkciou odbc_connect(). Parameter požiadavky obsahuje text požiadavky, ktorú má server vykonať. Ak požiadavka nemôže byť splnená, 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():

    int odbc_execute(int výsledku 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 pri volaní funkcie odovzdajú ďalšie údaje.

    Zvážte nasledujúci príklad:

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

    or die("Nepodarilo sa pripojiť k databáze ODBC");

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

    WHERE cust_id \"2000cu\"";

    $vysledok = odbc_prepare($pripojenie, $dotaz) or die("Nepodarilo sa pripravit dotaz!");

    $vysledok = odbc_execute($vysledok) or die("Dotaz sa nepodarilo vykonat!");

    odbc_close($pripojenie);

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

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

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

    Parameter connection_id je identifikátor pripojenia vrátený funkciou odbc_connect(). Parameter požiadavky obsahuje text požiadavky, ktorú má server vykonať. Ak požiadavka nemôže byť splnená, 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")

    or die("Nepodarilo sa pripojiť k databáze ODBC");

    odbc_close($connect) ;

    V tomto príklade sa funkcia odbc_exec() pokúša vykonať dotaz, ktorého text je obsiahnutý v premennej $query. V prípade úspechu sa premennej $result priradí ID výsledku; ak zlyhá, nastaví sa na FALSE a vytlačí sa správa odovzdaná pri volaní die().

    odbc_result_all()

    Veľmi praktická funkcia odbc_result_all() formátuje a zobrazuje všetky položky pre ID výsledku vrátené volaním odbc_exec() alebo odbc_execute(). Syntax funkcie odbc_result_all():

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

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

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

    or die("Nepodarilo sa pripojiť k databáze ODBC");

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

    $result = odbc_exec($connect, $query) or die("Nepodarilo sa vykonať dotaz!");

    odbc_result_all($result, "BGCOLOR="#c0c0c0" border="1" ");

    odbc_close($pripojenie);

    V dôsledku vykonania tohto príkladu sa obsah tabuľky zákazníkov zobrazí v tabuľke na svetlosivom pozadí s rámom s hrúbkou 1. Vzhľad tabuľky pre údaje zobrazené 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 sa o túto úlohu stará funkcia odbc_free_result(). Syntax funkcie odbc_free_result():

    int odbc_free_result (int result_id)

    Parametru funkcie je odovzdaný identifikátor výsledku, ktorý sa už v programe nebude používať. Majte na pamäti, že všetky pamäťové prostriedky sa po skončení skriptu automaticky uvoľnia; teda volanie funkcie odbc_free_result() je potrebné len pre veľmi veľké dotazy, ktoré spotrebúvajú veľmi veľké množstvo pamäte. Nasleduje príklad demonštrujúci použitie odbc_free_result(). Majte na pamäti, že túto funkciu možno zvyčajne vynechať, pokiaľ nemáte v úmysle spustiť viacero dotazov v tom istom skripte, pretože po ukončení skriptu sa automaticky uvoľní všetka pamäť.

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

    or die("Nepodarilo sa pripojiť k databáze ODBC");

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

    $result = odbc_exec($connect, $query) or die("Nepodarilo sa vykonať dotaz!");

    odbc_result_all($result, "BGCOLOR="#c0c0c0" border="1" "");

    odbc_free_result($vysledok);

    odbc_close($pripojenie);

    Po ukončení funkcie odbc_result_all() pomocou identifikátora výsledku sa pamäť vráti systému pomocou odbc_free_result().

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

    Microsoft Access a PHP

    Popularita databázy Microsoft Access (http://www.microsoft.com/office/access) je čiastočne spôsobená jej užívateľsky prívetivým grafickým rozhraním. Okrem používania Accessu ako samostatného DBMS môžete použiť jeho grafické rozhranie na organizáciu práce s inými databázami, ako je 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 vďaka popularite Microsoft Access je to vítaný doplnok do 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 postupovať podľa tohto príkladu, použite služby programu sprievodcu. Vytvoril som štandardnú databázu kontaktov pomocou sprievodcu. Nezabudnite vytvoriť niekoľko záznamov 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. Prejdite na Štart > Nastavenia > Ovládací panel (Štart > nastavenie > Ovládací panel). Nájdite ikonu ODBC Data Sources (32 bit) na ovládacom paneli. Táto ikona spustí správcu ODBC, ktorý sa používa 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 (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, ktorý bude pracovať s novým zdrojom. Vyberte riadok Microsoft Access Driver (*.mdb) a kliknite na tlačidlo Dokončiť.
    5. Na obrazovke sa zobrazí nové okno Microsoft Access ODBC Driver Setup (ODBC Microsoft Access Setup). Vo formulári vyhľadajte 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 priamo pod poľom Názov zdroja údajov.
    6. Kliknite na tlačidlo Vybrať... -- zobrazí sa okno v štýle Windows Explorer. Požiada vás o nájdenie databázy, ku ktorej sa bude pristupovať pomocou 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 je zobrazená 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 nižšie uvedenom skripte sa bežné funkcie ODBC (pozri vyššie) použijú na zobrazenie všetkých informácií v tabuľke kontaktov vytvorenej pomocou sprievodcu Access. Pred pohľadom na scenár je však dobré 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 konkrétna funkcia robí, pozrite si popis na začiatku tejto kapitoly. Výsledky výpisu 11.7 sú zobrazené na obrázku 1. 11.4.

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

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

    or die("Nepodarilo sa pripojiť k zdroju údajov.");

    // Vytvorenie textu požiadavky

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

    // Pripraviť požiadavku

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

    // Spustite dotaz a zobrazte výsledky

    odbc_execute($vysledok);

    odbc_result_all($vysledok, "BGCOLOR="#c0c0c0" border=1");

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

    // Zatvorte spojenie odbc_close($connect);

    Nie je to všetko jednoduché? A skvelé je, že tento skript je plne kompatibilný s akýmkoľvek iným DBMS s podporou ODBC. Pre prax skúste zopakovať všetky popísané kroky pre iný DBMS, spustite skript – a dostanete rovnaké výsledky ako na obr. 11.4.

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

    Projekt: PHP Link Directory

    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.

    Informácie zadané používateľom musia byť spracované a uložené. Návrh predchádzajúcej kapitoly ukázal, ako ľahko sa dá táto úloha vykonať pomocou PHP a textového súboru. Textové súbory sú nepochybne vhodné na ukladanie relatívne malých a jednoduchých údajov, ale v plnohodnotných webových aplikáciách sú informácie zvyčajne uložené v databázach. V tomto príklade sa databáza MySQL používa na ukladanie informácií o webových lokalitách. 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 kliknutím na jej názov načítať indexovú stránku a zobraziť zoznam všetkých lokalít v určitej kategórii.

    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 množinu atribútov: názov, URL, kategória, dátum zaradenia a popis. Takže definícia tabuľky v MySQL vyzerá asi takto:

    mysql>vytvoriť záložky tabuľky (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é, informácie o kategórii stránky sú z nejakého dôvodu uložené ako celé číslo -- ale nebolo by lepšie, aby názvy kategórií boli pre používateľa zmysluplnejšie a zrozumiteľnejšie? Nebojte sa, inicializačný súbor vytvorí pole spájajúce 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óriách túto úlohu výrazne zjednodušuje. Okrem toho pole celé číslo šetrí miesto na disku, pretože názov kategórie sa opakovane ukladá do tabuľky. Ď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édium alebo text. Ďalšie informácie 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() preberá vstup používateľa z formulára a zahŕňa ho do základu. Funkcia view_bookmark() získa index kategórie, prečíta všetky záznamy z databázy, ktoré patria do zadanej kategórie, a zobrazí ich v prehliadači. Inicializačný súbor aplikácie init.inc s komentármi je zobrazený vo výpise 11-8.

    Výpis 11.8. Referenčný 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 = "(!LANG:My Bookmark Repository":!}

    // Farba pozadia $bg_color = "biela";

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

    "zábava",

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

    // Názov databázy $database = "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ľ, $user, $pswd) or die("Nedá sa pripojiť k serveru MySQL!");

    // Výber databázy

    @mysql_select_db($database) or die("Nedá sa vybrať databázu Sdatabase!");

    // Funkcia: add_bookmark()

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

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

    $query = "INSERT DO $bookmark_table

    VALUES(\"$kategória\", \"$názov_stránky\", \"$url\", \"$post_date\", \"$description\")";

    $vysledok = @mysql_query($dotaz) or die("Nepodarilo sa" vlozit informacie o zalozke!");

    ) // 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_buniek, $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);

    tlačiť"

    ";

    tlačiť"

    ";

    if (mysql_numrows($vysledok) > 0) ;

    while ($riadok = mysql_fetch_array($vysledok)) ;

    Uverejnené: ".$row["dátum pridania"]."
    "

    tlačiť"

    ";

    tlačiť"

    ";

    tlačiť"

    ";

    tlačiť"

    ";

    tlačiť"

    ";

    tlačiť"

    Kategória: $categories[$category]
    ";

    tlačiť" ".$row["názov_stránky"]."

    tlačiť"

    ";

    tlačiť" http://".

    $row["url"]."
    ";

    tlačiť"

    ";

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

    tlačiť"


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

    tlač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 (!$seenform) :

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

    kategória:


    názov siete:


    URL: (urobte niezahrňte "http://"!)


    Popis:


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

    tlačiť"

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

    kliknite tu pre návrat do indexu.

    ";

    Po prvom načítaní stránky sa v prehliadači 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("Výpis11-8.php"); ?>

    <?=$title:?>

    view_bookmark($category) :

    Ryža. 11.6. Spustenie stránky view_bookmark.php pre kategóriu jedál

    Zostáva iba 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)) :

    tlačiť" $value
    ";

    Pridať novú záložku

    Ak pole $categories ponechá hodnoty uložené v súbore init.inc, výpis 11-11 odošle do prehliadača kód HTML zobrazený vo výpise 11-12.

    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 je pomerne rozsiahla a pre niektorých čitateľov môže byť najdôležitejšou v celej knihe. Nepochybne práca s databázami

    je jednou z najpozoruhodnejších funkcií jazyka PHP, pretože databázy výrazne zlepšujú 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 MySQL servera;
    • štandardné funkcie PHP pre prácu s MySQL;
    • implementácia najjednoduchšieho vyhľadávacieho systému;
    • triedenie tabuľky;
    • všeobecné informácie o ODBC;
    • štandardné funkcie PHP pre prácu s ODBC;
    • interakcia s Microsoft Access v PHP;
    • ukladanie užívateľských údajov na webovej stránke.

    Čitateľ, ktorý vyvíja veľké, skutočne dynamické PHP weby, sa bude musieť k téme databáz vracať znova a znova. Odporúčam vám pozorne si preštudovať nielen PHP dokumentáciu, ale aj ďalšie zdroje venované databázovým technológiám. 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 o šablónach, 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.

    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 výber z databázy, zápis do databázy, aktualizácia informácií v databáze a jej vymazanie z databázy. To všetko sa uskutoční pomocou štyroch príkazov – 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ť iba niektoré polia, napríklad meno a priezvisko.

    $vysledok = mysql_query("VYBRAŤ meno, priezvisko Z prvej_tabuľky", $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 sa zapíše do premennej $name).

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

    Okrem jednej podmienky ich môžeme uviesť aj niekoľko, napríklad potrebujeme získať ID všetkých používateľov s konkrétnym menom a priezviskom (meno a priezvisko budú zadané do premenných $meno a $priezvisko, resp. ). 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, získajme napríklad 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.

    V prípade potreby zoraďte 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 - získať iba prvých päť výsledkov z databázy.

    Boli to malé vzorky z databázy. Teraz sa pozrime na to, ako previesť prijatý výsledok do poľa na ď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 uchovávať . Ako parameter funkcie mysql_fetch_array() výsledok vykonania funkcie bude odovzdaný mysql_query(). Toto všetko bude vyzerať takto.

    $myrow = mysql_fetch_array($vysledok);

    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("MySQL Server","Používateľ databázy","Heslo pre prístup k databáze"); mysql_select_db("názov_db", $db); /*Vytvoriť dotaz do databázy*/ $result = mysql_query("SELECT name FROM first_table WHERE id="$id"",$db); /*Konvertovať výsledok na pole*/ $myrow = mysql_fetch_array($result); /*Zobraziť výsledok*/ echo $myrow["meno"];

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

    No a 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 tabuľky first_table 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, $meno a $priezvisko sú premenné s menom a priezviskom nového používateľa.

    Môžeš použiť .

    $vysledok = mysql_query ("INSERT INTO first_table (name, last_name) VALUES ("$name", "$last_name")"); if ($result == "true") ( echo "Položka bola úspešne pridaná!"; ) else ( echo "Položka nebola pridaná!"; )

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

    Aktualizujte informácie v databáze. AKTUALIZOVAŤ vyhlásenie

    Príkaz UPDATE sa používa na aktualizáciu informácií, ktoré už v databáze existujú. 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 $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 odstránenie polí z databázy. Syntax funkcie mysql_query() je v tomto prípade nasledovná.

    Teraz, ako obvykle, prejdime na príklad. Povedzme, že potrebujeme odstrániť 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. Látka nie je ťažká, ale je dosť ťažké ju vysvetliť cez text. Napriek tomu si myslím, že chápete podstatu vyššie uvedeného materiálu. Ak máte akékoľvek 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.