Webmaster cum să vă creați site-ul

Funcții PHP pentru lucrul cu MySQL

Luați în considerare funcțiile de bază ale PHP, utilizate pentru a lucra cu serverul MySQL.

Conectați-vă la serverul MySQL

După cum probabil ați observat, toți parametrii acestei funcții sunt opționali, deoarece valorile implicite pot fi setate în fișierul de configurare php.ini. Dacă doriți să specificați un nume diferit pentru gazda, utilizatorul și parola MySQL, puteți face întotdeauna acest lucru. Parametrul $ hostname poate fi specificat ca: host: port.

Funcția returnează un identificator (tip int) al conexiunii, toate lucrările ulterioare sunt efectuate numai prin acest identificator. Data viitoare când mysql_connect () este apelată cu aceiași parametri, noua conexiune nu va fi deschisă și funcția va returna identificatorul conexiunii existente.

Pentru a închide conexiunea, utilizați funcția mysql_close (int $ connection_id).

În general, conexiunea nu poate fi închisă - va fi închisă automat când scriptul PHP se termină. Dacă utilizați mai mult de o conexiune, atunci când apelați mysql_close (), trebuie să specificați ID-ul conexiunii pe care doriți să îl închideți. În general, nu închideți conexiunile - un stil rău, este mai bine să închideți conexiunile cu MySQL, mai degrabă decât să sperați pentru automatizarea PHP, deși acest lucru este dreptul dvs.

Dacă utilizați o singură conexiune la baza de date MySQL pe durata scriptului, nu puteți salva codul său de identificare și nu specificați un identificator atunci când apelați alte funcții.

Funcția mysql_connect () stabilește o conexiune obișnuită cu MySQL. Cu toate acestea, PHP acceptă conexiuni persistente - utilizați funcția mysql_pconnect () pentru a face acest lucru. Argumentele pentru această funcție sunt aceleași ca mysql_connect ().

Care este diferența dintre o conexiune persistentă și o conexiune obișnuită la MySQL? O conexiune persistentă nu se va închide după terminarea scriptului, chiar dacă scriptul apelează funcția mysql_close (). Conexiunea este atașată la PID a descendentului serverului web Apache (în numele căruia funcționează) și se închide numai atunci când procesul proprietarului este șters (de exemplu, când se închide sau se repornește serverul web Apache).

PHP funcționează cu conexiuni persistente, cum ar fi aceasta: când apelați funcția mysql_pconnect (), PHP verifică dacă o conexiune a fost stabilită anterior. Dacă da, identificatorul său este returnat și, dacă nu, se deschide o nouă conexiune și se returnează identificatorul.

Conexiunile constante vă permit reducerea semnificativă a încărcării pe server, precum și creșterea vitezei scripturilor PHP care utilizează bazele de date.

Atunci când se utilizează conexiuni persistente trebuie să vă asigurați că numărul maxim de clienți Apache nu preyvshalo numărul maxim de clienți MySQL, atunci parametrul MaxClient (în fișierul de configurare Apache - httpd.conf) trebuie să fie mai mică sau egală cu max_user_connection parametrul (opțiunea MySQL).

Funcția de selectare a bazelor de date

Funcția mysql_select_db (șirul $ db [, int $ id]) selectează baza de date din care se va executa scriptul PHP. Dacă nu se deschide mai mult de o conexiune, puteți omite parametrul $ id.

Eroare la manipularea funcțiilor

Dacă există o eroare de conexiune cu MySQL, veți primi un mesaj corespunzător și scriptul își va încheia activitatea. Acest lucru nu este întotdeauna convenabil, mai ales când depanarea script-urilor. Prin urmare, PHP are următoarele două funcții:

Prima funcție returnează numărul de eroare, iar a doua funcție returnează un mesaj de eroare. Ca urmare, putem folosi următoarele:

Acum veți ști ce a cauzat eroarea - veți vedea un mesaj formatat corespunzător.

Funcții pentru interogarea serverului bazei de date

Toate cererile către baza de date curentă sunt trimise de funcția mysql_query (). Această funcție trebuie să primească un parametru - textul solicitării. Textul solicitării poate conține caractere spații libere și linii noi (\ n). Textul trebuie scris conform regulilor sintaxei SQL. Exemplu de interogare:

Interogarea de mai sus trebuie să returneze conținutul tabelului meu. Rezultatul cererii este atribuit variabilei $ q. Rezultatul este un set de date care trebuie procesate într-un anumit mod după executarea interogării.

Funcții pentru prelucrarea rezultatelor interogărilor

Dacă interogarea executată cu funcția mysql_query () a reușit, rezultatul este că clientul va primi un set de înregistrări care poate fi procesat de următoarele funcții PHP:

  • mysql_result () - obțineți elementul necesar din setul de înregistrări;
  • mysql_fetch_array () - înregistrare în matrice;
  • mysql_fetch_row () - înregistrare în matrice;
  • mysql_fetch_assoc () - înregistrați în matricea asociativă;
  • mysql_fetch_object () - înregistrarea obiectului.

De asemenea, puteți determina numărul de înregistrări și câmpuri conținute ca urmare a interogării. Funcția mysql_num_rows () vă permite să aflați câte înregistrări conțin rezultatul interogării:

Înregistrările constau în câmpuri (coloane). Folosind funcția mysql_num_fields (), puteți vedea câte câmpuri conțin fiecare înregistrare de rezultate:

De asemenea, avem ocazia să aflăm semnificația fiecărui domeniu. Acest lucru se poate face folosind următoarea funcție:

Parametrul funcției $ row specifică numărul de înregistrare, iar parametrul câmpului $ specifică numele sau numărul secvenței câmpului.

Să presupunem că o interogare SQL a returnat următorul set de date:

Puteți afișa acest lucru în browser după cum urmează:

Trebuie remarcat faptul că funcția mysql_result () este universală: cunoscând numărul de înregistrări și numărul de câmpuri, puteți "obține" în jurul valorii de întregul rezultat, dar în același timp, viteza acestei funcții este destul de scăzută. Prin urmare, pentru procesarea seturilor mari de înregistrări, este recomandat să utilizați funcția mysql_fecth_row (). mysql_fecth_array (). și așa mai departe.

Funcția mysql_fecth_row (int $ res) primește imediat întreaga linie corespunzătoare înregistrării curente a rezultatului $ res. Fiecare apel al următoarei funcții deplasează pointerul de solicitare în următoarea poziție (la fel ca atunci când lucrează cu fișiere) și primește următoarea înregistrare. Dacă nu mai există înregistrări, funcția returnează FALSE. Un exemplu de utilizare a acestei funcții:

Este mai convenabil să utilizați funcția mysql_fetch_array (). care returnează o matrice asociativă ale cărei chei sunt numele câmpurilor.

Funcția mysql_fecth_array (int $ res [, int $ result_type]) nu întoarce o matrice asociativă, ci o matrice specificată de parametrul opțional $ result_type. care poate lua următoarele valori:

  • MYSQL_ASSOC - returnează o matrice asociativă;
  • MYSQL_NUM - returnează un matrice cu indicii numerici, ca în funcția mysql_fecth_row ();
  • MYSQL_BOTH - returnează un tablou cu indici dublu, adică, poate lucra cu ea ca și cu matrice asociativă și ca un combo (MYSQL_BOTH - aceasta este valoarea implicită pentru $ result_type.

În PHP, există o funcție care returnează o matrice asociativă cu un index:

De fapt, această funcție este un sinonim pentru mysql_fetch_array ($ res, MYSQL_ASSOC).

Exemplu de utilizare a funcției mysql_fecth_array ():

După cum puteți vedea, utilizarea funcției mysql_fetch_array () este mult mai convenabilă decât mysql_fetch_row ().

Funcții pentru obținerea de informații despre rezultatele interogărilor SQL

PHP oferă câteva funcții utile care vă informează despre rezultatele interogărilor SQL.

  • Funcția mysql_field_name (int $ result, int $ offset) returnează numele câmpului rezultat din rezultatul $ cu numărul $ offset (numerotarea începe la 0). Cu alte cuvinte, funcția returnează numele câmpului cu numărul $ offset.
  • Funcția mysql_field_type (int $ result, int $ offset) returnează tipul de câmp cu numărul $ offset ca urmare a rezultatului $ (numărul este specificat în raport cu rezultatul, nu cu tabela);
  • Funcția mysql_field_flags (int $ result, int $ offset) returnează stegulețele (modifiers) care sunt disponibile pentru câmp cu numărul $ offset. Vom lista toate steagurile suportate de MySQL:

Câmpul nu poate conține o valoare nedefinită (NULL), adică câmpul trebuie inițializat explicit

Articole similare