Cereri de php php în php

În lecția anterioară am luat cunoștință de elementele de bază ale limbajului SQL și acum vom încerca să aplicăm aceste cunoștințe în practică.

Toate interogările din PHP sunt efectuate în cea mai mare parte folosind funcția mysql_query (). Funcția are doi parametri: șirul de interogare și identificatorul de conexiune obținut după apelul la mysql_connect (). În principiu, identificatorul de conexiune poate fi omis, apoi ultima conexiune făcută va fi utilizată. Dar această abordare este plină de erori în scripturi complexe, cu mai multe conexiuni concurente la diferite baze de date.







Ca prim exemplu, selectăm toate rândurile din tabelul nostru:

Funcția mysql_query () va returna o trimitere la rezultatele interogării. Dacă cererea nu reușește cu o eroare, funcția returnează false. după care textul de eroare poate fi obținut prin apelarea mysql_error (). iar numărul de eroare este o funcție a lui mysql_errno ().

Pentru a obține o înregistrare separată de rezultatele interogării, trebuie să utilizați una dintre funcțiile de preluare (funcții de primire a datelor). Există mai multe dintre ele și fiecare este convenabil în cazul său.

$ result este o variabilă obținută după apelarea mysql_query ()

Parametrul de tip $ descrie formatul datelor returnate. Poate lua una din cele trei valori:

MYSQL_NUM. Funcția returnează o matrice numerotată, unde elementul zero este valoarea câmpului zero, primul element este valoarea primului câmp și așa mai departe. (câmpurile sunt considerate "de la stânga la dreapta" în ordinea în care au fost declarate în interogare):

MYSQL_ASSOC. Funcția returnează o matrice asociativă în care elementul cu numele câmpului conține valoarea acestui câmp.

MYSQL_BOTH. Se întoarce o matrice în care puteți accesa simultan datele atât prin număr cât și prin nume.

Toate funcțiile de preluare funcționează printr-un algoritm. La primul apel, funcția verifică prezența șirurilor, iar dacă rezultatul interogării nu este gol - returnează prima linie și mută pointerul de linie curent la următoarea înregistrare. Pentru fiecare apel ulterior, funcția returnează linia curentă utilizatorului și trece la următoarea. Dacă este atinsă ultima linie și nu există nimic de trimis, funcția returnează false.







Astfel, bucla de sortare a tuturor înregistrărilor va fi după cum urmează:

Uneori este nevoie să treci prin înregistrări nu numai "înainte", ci și "înapoi", adică de la linia curentă la prima. În acest caz, trebuie să utilizați funcția mysql_data_seek (), care vă permite să mergeți la înregistrare cu numărul specificat.

Valoarea numărului de linie trebuie să fie în intervalul de la 0 la numărul de rânduri din rezultatele interogării. Puteți afla numărul de rânduri folosind funcția mysql_num_rows (). Având în vedere acest lucru, puteți rescrie exemplul anterior într-o formă mai sigură:

Cu toate acestea, mysql_num_rows () se aplică numai rezultatelor unui SELECT. Când toate celelalte comenzi (INSERT, UPDATE și DELETE) sunt executate, funcția returnează 0 (deoarece serverul nu a returnat o singură linie). Pentru a determina câte rânduri au fost inserate, modificate sau șterse în timpul ultimei interogări, utilizați funcția mysql_affected_rows ().

De exemplu, următorul cod vă ajută să aflați rezultatele curățării unui tabel:

Dacă trebuie să cunoașteți valoarea câmpului autoincrement pentru înregistrarea nou introdusă, utilizați funcția mysql_insert_id ().

Așa cum am menționat mai sus - toate valorile text din interogări sunt scrise în citate simple. Dar, foarte des, există o situație când este necesar să introduceți un șir, care are deja citate (de exemplu, parola este de forma "my'1super'2password"). Dacă încercați să o faceți în forma originală, MySQL nu va putea procesa solicitarea și va returna o eroare adecvată. Pentru a evita acest lucru, mai întâi trebuie să pregătiți linia pentru intrare. Pentru aceasta, funcția mysql_real_escape_string () este utilizată. Convertește toate caracterele de serviciu și de nerecunoscut la caracterele lor speciale, cum ar fi \ x00, \ n, \ r, etc.

Verificarea obligatorie a tuturor datelor înainte de a intra în tabel nu reprezintă doar un semn de "ton bun" între programatori, dar este, de asemenea, o necesitate urgentă de a proteja site-ul de hacking și furtul de date.

Atunci când scrieți interogări complexe, este mai bine să testați interogarea cu programe terță parte înainte de a le adăuga la cod. Această abordare facilitează foarte mult testarea atât a interogării cât și a scenariului în ansamblu.







Articole similare

Trimiteți-le prietenilor: