Interogări SQL și procesarea acestora cu PHP
Metodele de accesare a tabelelor bazei de date sunt date de MySQL utilizând limba de interogare SQL. SQL este o abreviere, care este "dezvăluită" - o limbă de interogare structurată.
În PHP, în acest scop, există un număr de funcții cu prefixul "mysql". Nu avem nevoie de atâția dintre ei să ia în considerare cererile. O funcție fără care în limba PHP executarea interogărilor SQL ar fi pur și simplu imposibilă:
Această funcție trimite o interogare către baza de date și returnează un identificator de resurse dacă cererea are succes.
Pentru a vă conecta la baza de date MySQL, trebuie să efectuați următoarea secvență:
$ gazdă = 'localhost'; // numele gazdei (va fi confirmat de către furnizor)
$ bază de date = 'db_name'; // numele bazei de date pe care trebuie să o creați
$ user = 'numele utilizatorului'; // numele de utilizator specificat sau specificat de furnizor
$ pswd = 'pasul tău'; // parola pe care ați furnizat-o
$ dbh = mysql_connect ($ gazdă, $ user, $ pswd) sau să moară ("Nu se poate conecta la MySQL.");
mysql_select_db ($ database) sau muri ("Nu mă pot conecta la baza de date.");
Deci mysql_connect () este o functie pentru conectarea la serverul MySQL pe gazduirea ta.
Și mysql_select_db () selectează baza de date de pe server pentru a se conecta.
Cu alte cuvinte, ne conectăm la server, selectăm baza de date și începem să lucrăm.
Funcția die () este apelată în caz de eroare și afișează mesajul specificat în fereastra browserului.
Pentru a finaliza lucrul cu bazele de date, utilizați funcția:
Aici $ dbh este descriptorul că funcția mysql_connect a revenit când este conectat.
După ce ați finalizat examinarea inițială, vom începe analiza interogărilor SQL actuale.
Pentru a face acest lucru, trebuie mai întâi să creați o bază de date cu un nume specific. Și în el creați o masă, de asemenea, cu un nume specific. În exemplele noastre, consultați tabelul my_sql_table. Pentru a crea acest tabel, să rulați următoarea interogare în phpmyadmin a localhostului nostru:
CREATE TABLE `my_sql_table` (
`id` INT NOT NULL. // identificatorul înregistrărilor viitoare ale tabelului
`firstname` VARCHAR (50) NOT NULL, // câmpul text VARCHAR
"Nume de familie" VARCHAR (50) NU NULL, // lungime maximă de 50 de caractere
TASTĂ PRIMARĂ (`id`) // cheie primară - identificator id
);
Deci, masa este creată. Vom executa prima cerere, pe care o vom executa imediat sub forma unui cod PHP:
$ gazdă = 'localhost'; // numele gazdei (va fi confirmat de către furnizor)
$ bază de date = 'db_name'; // numele bazei de date pe care trebuie să o creați
$ user = 'numele utilizatorului'; // numele de utilizator specificat sau specificat de furnizor
$ pswd = 'pasul tău'; // parola pe care ați furnizat-o
$ dbh = mysql_connect ($ gazdă, $ user, $ pswd) sau să moară ("Nu se poate conecta la MySQL.");
mysql_select_db ($ database) sau muri ("Nu mă pot conecta la baza de date.");
$ interogare = "SELECT * FROM" my_sql_table` ";
$ res = mysql_query ($ interogare);
în timp ce ($ row = mysql_fetch_array ($ res))
echo "Numărul:" $ row ['id']. "
\ n ";
echo "Nume:" $ row ['firstname']. "
\ n ";
echo "Nume de familie:". $ row ['surname']. "
\ n ";
>
Să analizăm codul PHP al fișierului firstsql.php. Să începem cu interogarea efectivă a tabelelor bazei de date (DB).
$ interogare = "SELECT * FROM" my_sql_table` ";
Această interogare poate fi decodificată după cum urmează: selectați toate înregistrările din toate câmpurile din tabela de date my_sql_table. Astfel, * după cuvântul SELECT înseamnă "alegeți absolut totul". Deci, cererea se formează. Acum trebuie făcut:
Dacă interogarea reușește, funcția mysql_query () ne returnează identificatorul de resurse $ res.
Trebuie să îl transmitem ca parametru pentru funcția mysql_fetch_array (). Numele acestei funcții vorbește de la sine. Ie acesta generează și emite o matrice dintr-o selecție din tabela de baze de date. În cazul tabelului nostru, matricea va consta în numărul de elemente egal cu numărul de înregistrări (rânduri) din tabel și va conține valorile id, firstname, name pentru fiecare rând din tabel. Prin urmare, următorul cod:
în timp ce ($ row = mysql_fetch_array ($ res))
echo "Numărul:" $ row ['id']. "
\ n ";
echo "Nume:" $ row ['firstname']. "
\ n ";
echo "Nume de familie:". $ row ['surname']. "
\ n ";
>
$ query = "SELECT numele de la FROM` my_sql_table`";
atunci aceasta va însemna că numai valorile câmpului firstname sunt selectate din toate rândurile.
Prin urmare, codul anterior ar trebui rescris ca:
$ res = mysql_query ($ interogare);
în timp ce ($ row = mysql_fetch_array ($ res))
echo "Nume:" $ row ['firstname']. "
\ n ";
>
Dacă doriți să selectați rânduri ale tabelului cu o anumită valoare id în cazul în care numele de familie va fi Petrov. cererea va fi rescrisă după cum urmează:
$ query = "SELECT id FROM" my_sql_table` unde surname = 'Petrov';
Dar dacă trebuie să cunoașteți numele unei persoane care este sub numărul, de exemplu, 5, atunci cererea va fi:
$ query = "SELECT SURNAME din` my_sql_table` unde id = 5 ";
În acest caz, știi că rezultatul interogării va fi doar un rând din tabel. Ie Nu are nici un sens să organizați o buclă în timp. Cererea va fi procesată în continuare
$ res = mysql_query ($ interogare);
$ row = mysql_fetch_row ($ res);
echo "Numele persoanei a cincea din listă:" $ row [0] ". \ n";
Aici am folosit mysql_fetch_row () în loc de mysql_fetch_array (). Ie obțineți valoarea câmpului (sau câmpurilor) unui anumit rând. Deoarece am avut un câmp - numele de familie - putem să facem referire la elementul unic al matricei de $ rând ca $ row [0];
Apoi, nu vom vorbi despre cererile de procesare în detaliu, dar vom examina cele mai tipice exemple de interogări reale.
Deci, să aruncăm o privire la cele mai tipice exemple de interogări MySQL. Luați în considerare următoarele pe baza tabelului my_sql_table:
1. Adăugați la tabelul my_sql_table câmpul middle_name după numele de familie:
$ query = "ALTER TABLE" my_sql_table` ADD `middle_name`
VARCHAR (50) NU NULL DUPĂ "numele de familie" ";
2. Acum, eliminați câmpul de nume de la my_sql_table:
$ query = "ALTER TABLE" my_sql_table` Numele DROP ``;
3. Ștergeți înregistrările din tabelul my_sql_table cu numele de familie Sidorov:
$ query = "DELETE FROM 'my_sql_table` unde surname =' Sidorov '";
4. În plus față de semnele de egalitate, de asemenea "mai mult" sau "mai puțin", în limba interogărilor MySQL, există conceptul de "similar cu". Selectăm înregistrări din tabelul my_sql_table, unde numele "Dor" se găsește în prenume:
$ query = "SELECT * FROM" my_sql_table` unde numele de familie ca "% dor%" ";
Aici prezența "%" la începutul și la sfârșitul "dor" și înseamnă că interogarea va căuta exact "dor", și nu contează la începutul, sfârșitul sau mijlocul numelui este. Luați în considerare următorul exemplu
5. Selectați intrările din tabelul my_sql_table cu un nume care începe de la P. Observați locația "%":
$ query = "SELECT * FROM" my_sql_table` unde numele de familie ca "П% '";
6. Calculați valoarea maximă a id:
$ query = "SELECT MAX (ID) DE LA" my_sql_table "";
7. Să calculam numărul de câmpuri în my_sql_table cu numele de familie, care începe pe P.
$ query = "SELECT COUNT (*) FROM` my_sql_table` unde se numește 'П%' ";
8. Ștergerea tabelului my_sql_table:
$ query = "DROP TABLE" my_sql_table ";
Pentru interogările 1-3 în PHP, pur și simplu executați interogarea: