Accesul la baza de date MySQL folosind PHP

Material de fond privind limbajele de programare majore și dispunerea de site-uri.

Tehnica Gata pentru crearea de ambele site-uri dinamice simple și complexe folosind PHP si MySQL.

dezvoltarea de site-uri web sub „cheie“.

Dezvoltarea de site-uri fragmente individuale, sfaturi cu privire la aspectul paginilor web și programare web.

instrument web

magazin web

servicii web

grafica web

Resurse web

Accesul la baza de date MySQL folosind PHP

Doriți să fiți la curent cu evoluțiile care au loc pe site-ul? Inscrie-te pentru a primi cele mai recente știri și articole.

Uita-te pe Google

Accesul la o bază de date MySQL folosind PHP. Interogarea bazei de date folosind PHP date

Accesul la baza de date MySQL folosind PHP

Până în prezent, exemplele de stocare și extragere a datelor, am folosit fișiere plate. Acolo, am spus că utilizarea sistemelor de baze de date relaționale oferă o mai simple, sarcini de stocare a datelor și de recuperare de siguranță și eficiente. Acum, după ce a lucrat cu MySQL pentru a crea o bază de date, puteți începe să vă conectați baza de date la o interfață web extern.

Cum funcționează baze de date

Avem o bază de date MySQL, astfel încât să ne putem pregăti codul PHP pentru a efectua pașii. Să începem cu un formular de căutare. Acesta este un simplu HTML-formă. Codul pentru acest formular este prezentat în listă.

Pagina -poiskovaya search.php pentru baza de date Magazin online





Internet - magazin - Căutare în catalog

Când faceți clic pe Find numit results.php scenariu. Codul său complet este prezentat mai jos.

results.php interogare rezultate -izvlekaet dintr-o bază de date MySQL și le formate pentru afișare.





Internet - magazin - Rezultate căutare

Deschideți pagina de căutare, completați în caseta de căutare și faceți clic pe „Căutare“.

Rețineți că script-ul vă permite să introduceți MySQL metacaractere% și _ (subliniere). Această caracteristică este extrem de util pentru utilizatori. În cazul în care caracterele de mai sus cauzează probleme în cererea dumneavoastră, puteți să le anulați.

Interogarea bazei de date

În oricare scenariu, care oferă acces la o bază de date de pe Web, trebuie să efectuați o serie de etape de bază:

  1. Verificați și filtra datele provenind de la utilizator.
  2. Faceți o conexiune la baza de date.
  3. Punerea în aplicare o interogare a bazei de date.
  4. Obțineți rezultate.
  5. Pentru a prezenta rezultatele pentru utilizator.

Acesta realizează scenariul acestor acțiuni results.php, iar noi la rândul său, va examina fiecare dintre ele.

Verificarea și filtrarea datelor de intrare

Mai întâi trebuie să eliminați toate spațiile suplimentare, pe care utilizatorul poate intra accidental înainte sau după termenul de căutare. Acest lucru se face folosind funcția de ajustare () este aplicat la $ SEARCHTERM.

$ SEARCHTERM = asieta ($ SEARCHTERM);

Următoarea etapă constă în verificarea că criteriile specificate de utilizator și tipul de căutare. Vă rugăm să rețineți că se efectuează numai după îndepărtarea spațiilor suplimentare la marginile criteriilor de căutare. Dacă schimbați locul de acțiune, o situație poate apărea atunci când testul nu a fost gol, și, prin urmare, nu a avut ca rezultat un mesaj de eroare, dar conținea doar spații care sunt complet asieta eliminate) Funcția (:

if (! $ || Tip de căutare! $ SEARCHTERM)
echo „Nu ați introdus parametrii de căutare. Reveniți la pagina anterioară și apoi încercați din nou „;
ieșire;
>

Sa efectuat verificarea $ variabila in ciuda Tip de căutare faptului că, în acest caz, este vorba de HTML-tag-ul SELECT. S-ar putea întreba de ce aveți nevoie pentru a verifica datele de intrare. Nu uitați că contul de bază de date poate fi legată prin nici un caz o singură interfață.

Și totuși, dacă vă așteptați ca datele introduse de utilizator unele date, este important să le excludă din orice caractere de control. După cum s-ar putea aminti am vorbit deja despre addslashes funcția (), stripslashes () și get_magic_quotes_gpc (). Trebuie să subliniem caractere de control (literalizovat le) într-un introduse de utilizator de date, cruciale pentru salvarea acestora în baza de date.

În cazul nostru, valoarea este verificată, funcția returnează get_magic_quotes_gpc (). Această valoare specifică dacă automată citat. Dacă nu, utilizați addslashes () funcție este de caractere de control anulate:

if (! get_magic_quotes_gpc ())
$ = Addslashes (Tip de căutare $); Tip de căutare
$ SEARCHTERM = addslashes ($ SEARCHTERM);
>

Funcția htmlspecialchars () este utilizat pentru codificarea caracterelor, care au o semnificație deosebită în HTML. Datele noastre de testare nu conține un caracter ampersand (), caractere „mai puțin“ (<), больше (>) Sau ghilimele duble ( „), cu toate acestea, ampersand pot fi găsite în numele multor cărți. Folosind această funcție ajută la evitarea greșelilor în viitor.

Stabilirea unei conexiuni

În PHP5 are o nouă bibliotecă pentru a conecta MySQL, mysqli numit ( „i“ înseamnă „îmbunătățit“ -Îmbunătățiți). În MySQL4 un nou protocol de conectare rapidă și mysqli vă permite să folosiți toate avantajele sale. În plus, biblioteca mysqli vă permite să utilizați două sintaxe: și procedural orientate-obiect.

Pentru a vă conecta la serverul MySQL, utilizați următoarea linie de script:

@ $ Db = new mysqli ( 'localhost', 'root', 'magazin', 'cărți');

Această linie creează o instanță a mysqli de clasă și încearcă să se conecteze la gazdă „localhost“ cu „rădăcina“ numele și parola „magazin“. Conexiunea se va utiliza „cărți“ bază de date.

În conformitate cu abordarea orientată spre obiect, a apela o metodă de obținere a unui obiect pentru a accesa baza de date. Dacă preferați o abordare procedurală, mysqli o permite, atunci conexiunea va fi după cum urmează:

@ $ Db = mysqli_connect ( 'localhost', 'magazin' 'rădăcină', 'cărți');

Funcția de tabelă returnează o resursă, nu un obiect. Această resursă reprezintă o conexiune bază de date, și folosind o abordare procedurală trebuie să-l transmită tuturor celorlalte funcții mysqli. Această abordare este foarte similar cu lucrul cu funcții de fișiere, cum ar fi fopen ().

Cele mai multe funcții mysqli au o interfață orientată spre obiect și procedural. În general, diferențele dintre ele se află în faptul sute de nume de opțiuni procedurale mysqli_ funcții încep cu prefixul, și este necesar să se transmită o resursă care este primit dintr-o funcție de apel mysqli_connect (). Excepție de la aceste reguli este de a se conecta la baza de date, deoarece deține clasa de designer mysqli.

Rezultatul încercării de conectare trebuie să fie verificate, deoarece restul codului în cazul unei conexiuni nu a reușit nu va funcționa. Verificarea este efectuată cu următorul cod:

if (mysqli_connect_errno ())
Eroare echo“: Nu s-a putut conecta la baza de date. Vă rugăm să încercați din nou mai târziu „.;
ieșire;
>

mysqli_connect_errno () funcția returnează numărul de eroare sau 0 în cazul unei conexiuni de succes.

Rețineți că șirul pe care încercați să vă conectați la baza de date, începe cu suprimarea eroare pasul. În acest caz, se pot organiza situații de eroare de manipulare elegant. de manipulare eroare poate fi, de asemenea, puse în aplicare folosind excepții, cu toate acestea, în acest exemplu simplu, au decis să nu folosească.

Trebuie amintit faptul că, în MySQL numărul de conexiuni care pot exista, în același timp este limitat. Această limită este determinată de MAX_CONNECTION parametru. Numirea sa ca parametru MaxClients conexă de serverul web Apache, cauza server pentru a respinge noi cereri de conectare pentru a preveni utilizarea deplină a resurselor informatice în cele mai înalte ore de încărcare sau într-un program de urgență de întreținere.

Valorile acestor parametri pot fi modificate prin editarea fișierelor de configurare. Pentru a configura parametrul MaxClients în Apache, ar trebui să modifice fișierul httpd.conf. Setarea max_connections în MySQL se face prin editarea fișierului my.conf.

Selectarea unei baze de date

Lucrul cu MySQL din linia de comandă, trebuie să specificați baza de date utilizată:

Același lucru este necesar și la conectarea de pe Web. Baza de date trebuie să fie utilizată este specificată în constructorul mysqli parametrul sau funcția mysqli_connect (). Dacă doriți mai târziu să se schimbe baza de date utilizată pentru această funcție este mysqli_select_db (), care este accesat după cum urmează:

$ Db -> select_db (DBNAME)

mysqli_select_db (db_resource, db_name)

Și aici ambele versiuni caracteristici - obiect orientat și procedural, cu diferite prefix de procedură LSH mysqli_ într-un nume și un parametru care trebuie să fie trecut pentru a conecta resursa.

Interogarea bazei de date

Pentru a face o cerere, trebuie să utilizați funcția mysqli_query (). Cu toate acestea, înainte de depunerea cererii este necesară pentru a construi:

$ Query = „* selectați din cărți
în cazul în care "$ Tip de căutare."
cum ar fi „ '%% "$ SEARCHTERM.".';

În acest caz, valorile care urmează să fie căutate, utilizatorul a intrat ($ Tip de căutare), le-a spus în domeniu ($ SEARCHTERM). Probabil ați observat că pentru cartografiere, am folosit alții, mai degrabă decât eqal -cu căutarea în baza de date, de obicei, are sens pentru a extinde numărul de căutare de frontieră.

Acum puteți rula interogarea:

$ Rezultat = $ db -> interogare ($ query);

Sau, dacă preferați o interfață de procedură, interogarea ar arata astfel:

$ Rezultat = mysqli_query ($ db, $ query);

Tu treci cererea de a fi executat, iar în cazul unei interfețe de procedură, conexiunea la baza de date.

versiune orientată spre obiect returnează obiectul rezultat și versiunea procedurală - resursa rezultat. În orice caz, valoarea returnată este stocată în rezultatul $ variabila pentru o utilizare ulterioară. Funcția returnează false dacă apare o eroare.

Obținerea rezultatelor interogării

Există multe caracteristici care permit o varietate de moduri de a izola fragmentele dorite ale identificatorului de obiect sau de rezultat. Obiectul sau rezultatul de identificare - este cheia pentru a accesa șirul de interogare returnat.

În exemplul nostru, am contorizat numărul de rânduri returnate și interogarea folosind funcția mysqli_fetch_assoc ().

Această abordare orientată spre obiect, numărul de rânduri returnate sunt stocate în num_rows elementului rezultat obiect. Consultați elementele menționate în felul următor:

$ Num_results = $ rezultat -> num_rows;

În abordarea procedurală pentru a obține numărul de rânduri returnate funcției mysqli_num_rows utilizate (), care este necesar să se transfere identificatorul de rezultat:

Această informație este foarte util în cazul în care aveți de gând să proceseze sau să afișeze rezultatele. Cunoașterea numărului de rânduri pe care le permite să bucla prin ele:

pentru ($ i = 0; $ i <$num_results; $i++)
// Procesarea rezultatelor
>

In fiecare iterație a acestei bucle invocării $ rezultat -> fetch_assoc () (sau mysqli_fetch_assoc ()) ciclu nu va fi efectuată în absența liniilor de retur. Este această funcție preia fiecare rând al setului de rezultate și o returnează ca o matrice, în cazul în care fiecare cheie este numele atributului, iar fiecare valoare valoarea corespunzătoare:

$ Row = $ rezultat -> fetch_assoc ();

Sau, folosind o abordare procedurală:

$ Row = mysqli_fetch_assoc ($ rezultat);

Cu un rând matrice $, puteți trece prin toate câmpurile și a afișa în mod corespunzător fiecare dintre ele:

echo '
ISBN: „;
stripslashes echo (rândul $ [ 'isBn']);

Așa cum am menționat anterior, stripslashes () este chemat pentru a „curăța“ valoare înainte de afișarea pentru utilizator.

Există mai multe opțiuni pentru a obține rezultate dintr-un identificator de rezultat. În loc de o matrice cu chei numite, puteți utiliza o matrice numerică, folosind mysqli_fetch_row ():

$ Row = $ rezultat -> fetch_row ();

sau, în cazul unei abordări de procedură:

$ Row = mysqli_fetch_row ($ rezultat);

Boutout valorile atributelor stocate în fiecare dintre valorile $ rândul [0], $ rândul [1] și așa mai departe. Funcția mysqli_fetch_array () vă permite să obțineți șirul într-o matrice de ambele tipuri.

Cu funcția mysqli_fetch_object (), puteți selecta, de asemenea, linia care urmează să fie plasate în interiorul obiectului:

$ Row = $ rezultat -> fetch_object ();

$ Row = mysqli_fetch_object ($ rezultat);

Apoi, puteți accesa fiecare atribut utilizând

$ Row -> titlu, $ rând -> autor, și așa mai departe

Deconectarea de la baza de date

Eliberarea setului de rezultate sunt executate după cum urmează:

Apoi, puteți închide conexiunea bazei de date:

În mod explicit deconectarea nu este nevoie, pentru că la sfârșitul conexiunii script-ul se va închide automat.

  • discuta