internetul Windows. Android

SQL - solicitări și prelucrarea acestora utilizând PHP. Crearea unei conexiuni cu MySQL baze de date în moduri diferite de conectare la baza de date PHP

Textul a folosit traducerea documentației oficiale făcute de Clubul de Master Web All-Rus.

Toate lucrările cu baze de date sunt reduse la o conexiune la server, o selecție a bazei de date, trimițând o solicitare, procesând o interogare și deconectați de la baze. Deci, ia în considerare articolul tot cazul. Pentru claritatea întregului text, vă vom imagina că serverul MySQL este instalat pe mașina locală. Portul pentru lucrul cu acesta este standard. Pentru conectivitate, vom folosi numele de utilizator și parola "No_one".

Conexiune

Conectarea la baza de date este efectuată utilizând funcția "MySQL_CONNECT ()". Acesta este transmis trei parametri: numele serverului (sau numele serverului: portul pentru conectare), numele de utilizator și parola. În cazul în care se va face cel de-al doilea apel "MySQL_CONNECT () cu aceleași argumente, nu va fi stabilită nicio conexiune nouă - în schimb, identificatorul de comunicare va fi returnat (adică, lucrarea va continua cu aceeași bază de date). Dacă lucrați numai cu o singură bază de date, identificatorul de conectare nu este necesar. De îndată ce execuția scenariului sa încheiat, comunicarea cu serverul se închide dacă nu a fost închisă în mod explicit apel anterior "mysql_close ()".

Exemplu: $ Connect \u003d mysql_connect ("localhost", "rădăcină", \u200b\u200b"no_one"); În acest caz, variabila $ Connect este întâlnită de identificatorul de conectare. Dacă lucrarea se face cu o singură bază de date, codul este scris fără identificator: MySQL_CONNECT ("localhost", "rădăcină", \u200b\u200b"no_one");

Selectați baza de date

"MySQL_SELECT_DB" - selectează baza de date MySQL. Aceasta înseamnă că nu există o bază de date pe server, ci mai multe. Vom alege această comandă de care aveți nevoie (pe care avem drepturi). Parametrul acestei funcții este numele bazei. Baza în acest mod devine activă și asociată cu un identificator specific. Dacă identificatorul de comunicare nu este definit, se utilizează ultima conexiune la baza de date.

Exemplu: MySQL_SELECT_BD ("Test", $ Connect); - În cazul în care testul este un nume de bază de date, iar $ Connect este un identificator al conexiunii. Dacă lucrarea este efectuată numai cu o singură bază de date, codul este scris fără identificator: MySQL_SELECT_BD ("Testul");

Trimite cerere

mySQL_Query () trimite o cerere la baza de date, până în prezent, activă pe server, care este asociată cu un identificator de comunicare specific. Dacă identificatorul nu este specificat, se utilizează ultima conexiune deschisă. Parametrul acestei funcții este un șir cu o interogare SQL.

Exemplu: $ tmp \u003d mysql_query ("slect * de la masă", $ Connect); - Acest komen va da întregul conținut al tabelului de masă din baza de date activă la care indică identificatorul $ Connect. Dacă lucrarea este efectuată cu o singură bază de date, codul este scris fără identificator: $ tmp \u003d mysql_query ("slect * din tabel");

Cererea de procesare

Există mai multe funcții pentru procesarea interogării. Selectarea unei anumite metode de procesare a interogărilor depinde de stilul de programare stabilit de sarcină. De asemenea, ar trebui să fie amintit că diferite opțiuni pentru diferite "descărcări" serverul (unele nu sunt foarte mult). Vom analiza mai multe dintre ele.
MySQL_FETCH_OBJECT - Returnează obiectul PHP ca rezultat de procesare. Această metodă este bună pentru cei care sunt obișnuiți cu programarea obiectului.
Exemplu: în timp ce ($ rezultat \u003d mysql_fetch_object ($ tmp)) Echo ($ rezultat-\u003e Nume);

mySql_fetch_Array - alege rezultatul ca o matrice asociativă. Această metodă este bună pentru începători (deși cum să spun, acesta este cât de mult vă place).

Închiderea unui compus

Închiderea conexiunii se face prin funcția MySQL_Close (). Parametrul său este identificatorul de conectare cu baza de date. Dacă acest parametru nu este specificat, ultima conexiune conectată este închisă.

Erori sunt flagelul oricărui program. Cu cât proiectul este mai greu, este mai greu de corectat și de a găsi erori. Dar cel mai important în procesul de lucru cu programul este calificarea programatorului și dorința sa de a scrie codul drept și precis care conține numărul minim ...

În acest articol vom învăța trimiteți cereri în baza de date prin PHP. Acest articol este foarte important, și este necesar să înțelegeți. Cu toate acestea, vă voi calma - materialul este foarte simplu, deci nu ar trebui să existe nici o dificultate.

Înainte de a trece la subiectul articolului, am avertizat în prealabil că nu voi dezasambla în detaliu limba SQL.. Toate informațiile necesare dezasamblate în categoria dedicate, iar aici suntem numai lucrăm cu MySQL prin PHP.

Acum mergeți la K. trimiterea cererilor de baze de date către PHP:


}
$ Mysqli-\u003e interogare ("inserați în valorile mytable (nume, e-mail) (" MyName "," [E-mail protejat]")");
$ mysqli-\u003e close ();
?>

În acest exemplu, ne-am conectat la baza de date, am verificat succesul conexiunii, am trimis o solicitare utilizând metoda interogare ()Și apoi închise conexiunea. După cum puteți vedea, totul este foarte simplu. Pentru a trimite orice SQL interogări doar o singură metodă - interogare ()Prin urmare, în acest caz, totul este extrem de simplu.

Acum complică ușor sarcina. Să ne uităm la cererile care se întorc setul de rezultate. - Rezultat. Cea mai populară cerere a fost redată setul de rezultate. - Acesta este un eșantion de date din tabel. În exemplul următor, vom face o probă de date și apoi vom rezuma rezultatul:

$ mysqli \u003d @ nou Mysqli ("localhost", "admin", "pass", "mybase");
dacă (mysqli_connect_errno ()) (
ECHO "Conexiunea nu este posibilă:" .mysqli_connect_error ();
}
$ rezultate_set \u003d $ mysqli-\u003e
În timp ce ($ rând \u003d $ rezultat_set-\u003e fetch_assoc ()) (
Print_r ($ rând);
Echo "
";
}
$ rezultate_set-\u003e close ();
$ mysqli-\u003e close ();
?>

Pentru a începe, voi explica un pic, care este setul de rezultate.. Setul de rezultate. - Acesta este un tabel cu un rezultat. Acest tabel are un set de înregistrări (linii de masă). Și pentru ieșirea tuturor înregistrărilor, trebuie să mutați fiecare linie a tabelului și să o retrageți. Și acum explic un exemplu: După trimiterea unei cereri, suntem formați setul de rezultate.. Apoi atribuim o variabilă în ciclu rând Valoarea liniei următoare, adică o matrice unidimensională care returnează metoda fetch_assoc (). Când toate liniile sunt terminate, metoda fetch_assoc () întoarcere falsși va fi eliberat din ciclu. În interiorul ciclurilor in timp ce Pur și simplu derivă o serie utilizând funcția de depanare. print_r ()Deși cu siguranță ar fi posibil să se retragă utilizarea pentru fiecare.Dar acum nu este necesar.

Să rezumăm pe scurt cum să lucrăm cu setul de rezultate.:

  1. A primi setul de rezultate.Prin trimiterea cererii corespunzătoare la baza de date.
  2. În ciclul fiecărei iterație pentru a atribui următoarea linie (înregistrare) de la setul de rezultate. folosind o metodă fetch_assoc () Unele variabile rând. Apoi puteți lucra cu această variabilă ca și cu o matrice asociativă unidimensională, în care cheile sunt numele câmpurilor tabelului, iar valorile corespund intrării curente.
  3. Asigurați-vă că închideți setul de rezultate. Metodă Închide ()Pentru a acoperi resursele.

Cum ați observat metoda fetch_assoc () Returnează întotdeauna înregistrarea următoare. Adică primul 1, apoi al doilea, apoi al treilea și așa mai departe. Dacă aveți o experiență de programare bună, veți ghici imediat că acest lucru se datorează indicatorului interior, pe care, desigur, îl puteți mișca. Unde este folosit? De exemplu, poate fi folosit când trebuie să lucrați cu setul de rezultate. nu 1 , dar 2 Mai mult de o dată. Pentru a reforma aceeași solicitare, puteți să mutați pointerul la început. Și apoi vă puteți angaja din nou setul de rezultate. Folosind metoda Fetch_assoc ().

Pentru a schimba poziția indicatorului, există o metodă data_seek ()care ia un număr întreg de la 0 inainte de " numărul de înregistrări - 1", respectiv, indicatorul se ridică la parametrul de înregistrare corespunzător:

$ mysqli \u003d @ nou Mysqli ("localhost", "admin", "pass", "mybase");
dacă (mysqli_connect_errno ()) (
ECHO "Conexiunea nu este posibilă:" .mysqli_connect_error ();
}
$ rezultate_set \u003d $ mysqli-\u003e interogare ("selectați * de la mytable");
$ rezultat_set-\u003e Num_rows;
În timp ce ($ rând \u003d $ rezultat_set-\u003e fetch_assoc ()) (
Print_r ($ rând);
Echo "
";
}
$ Rezultat_set-\u003e Data_seek (0);
În timp ce ($ rând \u003d $ rezultat_set-\u003e fetch_assoc ()) (
Print_r ($ rând);
Echo "
";
}
$ rezultate_set-\u003e close ();
$ mysqli-\u003e close ();
?>

În acest exemplu, am adus numărul de înregistrări în rezultat_set Folosind proprietatea num_rows.. Și, de asemenea, sa familiarizat cu metoda data_seek (). Adică am trecut peste tot rezultat, apoi am întors pointerul la 0 Y. Înregistrați și din nou a trecut rezultatul.

În acest articol, am repetat conexiunea la baza de date și închiderea conexiunii. Și, de asemenea, învățat cum să trimiteți cereri în baza de date prin PHP. Învățat, cum să primiți rezultatul_set. Și cum să lucrezi cu el. Asta e tot ce trebuie să știi pentru succes lucrați cu MySQL în PHP.

DBMS. Mysql. - una dintre bazele de date multiple acceptate în PHP. Sistemul MySQL este distribuit gratuit și are suficientă putere pentru a rezolva probleme reale.

Scurtă introducere în MySQL

SQL. - Aceasta este o abreviere din cuvinte Limba de interogare structurată.Ce înseamnă limba structurată a interogării. Această limbă este un instrument standard pentru a accesa diferite baze de date.

Sistemul MySQL este un server la care se pot conecta utilizatorii de computere la distanță.

Pentru a lucra cu baze de date, este convenabil să utilizați mijloacele incluse în dezvoltatorul web: Denwer Phpmyadmin. Aici puteți crea o bază de date nouă, creați un nou tabel în baza de date selectată, completați tabelul de date și adăugați, ștergeți și editați date.

MySQL definește trei tipuri de date de bază: numeric, data și ora și literele mici. Fiecare dintre aceste categorii este împărțită în mai multe tipuri. Principalele sunt:


Fiecare coloană după tipul de date conține alți specificatori:

Un felDescriere
NU NULToate rândurile mesei trebuie să fie în acest atribut. Dacă nu este specificat, câmpul poate fi gol (null)
INCREMENT AUTO. Caracteristică specială a MySQL, care poate fi utilizată în coloane numerice. Dacă atunci când introduceți șiruri de caractere în tabel, lăsați un astfel de câmp gol, MySQL generează automat o valoare unică de identificare. Această valoare va fi pe unitate mai mare decât valoarea maximă deja existentă în coloană. Fiecare tabel nu poate fi mai mult decât un astfel de câmp. Coloanele cu auto_increment trebuie indexate
CHEIA PRINCIPALA.Coloana este cheia primară pentru masă. Datele din această coloană trebuie să fie unice. MySQL indexează automat această coloană
Nesemnat.După un tip întreg, înseamnă că valoarea sa poate fi fie pozitivă, fie zero
cometariuNumele coloanei Titlu.

Crearea unei noi baze de date MySQL Creați baza de date..

Creați baza de date dacă nu există setul de caractere implicit "Base" CP1251 Collate CP1251_BIN

Crearea unui nou tabel efectuate folosind o comandă SQL Creați tabelul. De exemplu, o masă de cărți pentru o librărie va conține cinci domenii: ISBN, autor, nume, preț și număr de exemplare:

Creați cărți de masă (ISBN Char (13) nu NULL, Cheie primară (ISBN), Autor Varchar (30), Titlu Varchar (60), Preț Float (4,2), Cantitate Tinyint nesemnat); Pentru a evita un mesaj de eroare dacă tabelul are deja nevoie de a schimba prima linie adăugând expresia "dacă nu există": Creați tabel dacă nu există cărți ...

Pentru creare domeniu actualizat automat Cu data curentă de tip Timestamp sau DateTime, utilizați următorul design:

Creați tabelul T1 (TIMSTAMP implicit curent_Timestamp On Update Current_Timestamp, DT DataTime implicit curent_Timestamp pe actualizare Current_Timestamp);

Plus Datele din acest tabel se efectuează utilizând o comandă SQL Introduce.. De exemplu:

Introduceți în cărți (ISBN, autor, titlu, preț, cantitate) Valori ("5-8459-0184-7", "Zandstra Mat", "Deblocați-vă php4 timp de 24 de ore", "129", "5") ;

Pentru a extrage date de la operatorul de masă servește SELECTAȚI. Acesta preia datele din baza de date, alegerea liniilor care îndeplinesc criteriile de căutare specificate. Declarația SELECT însoțește un număr considerabil de opțiuni și utilizează opțiuni.

Simbolul * înseamnă că toate câmpurile sunt necesare. De exemplu:

Selectați * din cărți;

Pentru a obține acces doar la un anumit domeniu, trebuie să specificați numele său în instrucțiunea SELECT. De exemplu:

Selectați autorul, titlul, prețul cărților;

Pentru a accesa un subset de rânduri în tabel, specificați criteriul de selecție care stabilește designul Unde. De exemplu, pentru a alege disponibilul în prezența cărților ieftine despre PHP, trebuie să faceți o cerere:

Selectați * din cărți în care prețul% corespunde oricărui număr de caractere, chiar și zero
_ Corespunde unui simbol neted

Pentru ca liniile extrase la cerere, designul este utilizat într-o ordine specifică; Comanda prin.. De exemplu:

Selectați * din comanda cărților după preț;

Mod implicit ordin triere Merge ascendentă. Schimbarea ordinului de sortare la invers poate fi utilizarea unui cuvânt cheie DESC.:

Selectați * de la comanda de cărți după prețul DESC;

Fel De asemenea, puteți în mai multe coloane. În loc de numele coloanelor, puteți utiliza numerele de ordine:

Selectați * din comanda cărților cu 4, 2, 3;

Pentru a schimba valorile înregistrate anterior în tabel, trebuie să utilizați echipa Actualizați.. De exemplu, prețul tuturor cărților ridicate cu 10%:

Actualizați cărți setate de preț \u003d prețul * 1.1;

În cazul în care designul va limita actualizarea la un anumit rând. De exemplu:

Actualizați cărți setate de preț \u003d prețul * 1.05 unde prețul

Pentru a elimina rândurile din baza de date, operatorul este utilizat Șterge.. Liniile inutile sunt indicate folosind designul în cazul în care designul. De exemplu, unele cărți sunt vândute:

Ștergeți din cărți în care cantitatea \u003d 0;

Dacă doriți să ștergeți toate înregistrările

Trunchate table table_name.

Pentru a șterge complet tabelul utilizează:

Drop tabel table_name.

PHP Comunicare cu baza de date MySQL

Lucrul cu PhpMyAdmin Pentru a crea o bază de date, puteți trece la conectarea acestei baze de date la o interfață web externă.

Pentru a accesa baza de date de pe web utilizând PHP, trebuie să faceți următorii pași principali:

  • Conectați-vă la serverul MySQL.
  • Selectați baza de date.
  • Efectuarea unei cereri de baze de date:
    • plus;
    • Îndepărtarea;
    • schimbarea;
    • căutare;
    • triere.
  • Obținerea unui rezultat interogării.
  • Deconectarea din baza de date.

Pentru a vă conecta la serverul de baze de date din PHP, există o funcție mysql_connect (). Argumentele sale: numele computerului, numele de utilizator și parola. Aceste argumente pot fi omise. Implicit, numele computerului \u003d localhost, atunci numele de utilizator și parola nu sunt necesare. Dacă PHP este utilizat împreună cu serverul Apache, puteți utiliza funcția mysql_pconnect (). În acest caz, conexiunea la server nu dispare după terminarea programului sau apelul funcției mysql_close (). Funcții mysql_connect () și mysql_pconnect () Returnați identificatorul de conectare dacă totul a trecut cu succes. De exemplu:

$ Link \u003d mysql_pconnect (); dacă (! $ link) mor ("Imposibil de conectat la mysql");

După conectarea la serverul MySQL, trebuie să selectați baza de date. Aceasta utilizează funcția mysql_select_db (). Argumentul său: numele bazei de date. Funcția returnează TRUE dacă există o bază de date specificată și accesul la acesta este posibil. De exemplu:

$ db \u003d "eșantion"; mysql_select_db ($ db) sau matri ("incapabil să deschidă $ db");

Pentru a adăuga, șterge, modifica și selecta date, trebuie să construiți și să executați SQL. Pentru aceasta, există o funcție în PHP mysql_query (). Argumentul său: șir cu o cerere. Funcția returnează identificatorul de interogare.

Exemplul 1.

Adăugând o intrare la masă

De fiecare dată de execuție a exemplului 1, o nouă intrare care conține aceleași date va fi adăugată la masă. Desigur, este logic să adăugați date în baza de date introdusă de utilizator.

În Exemplul 2.1, se arată o formă HTML să adauge noi cărți în baza de date.

Exemplul 2.1.

Forma HTML de a adăuga cărți noi
ISBN.
Autor
Nume
Preț
număr


Rezultatele complete ale acestui formular sunt transmise la insert_book.php.

Exemplul 2.2.

Program pentru adăugarea de cărți noi (fișier insert_book.php) Vă rugăm să reveniți înapoi și să terminați introducerea ");) $ ISBN \u003d Trim ($ _post [" ISBN "]; $ autor \u003d Trim ($ _post [" autor "]); $ title \u003d ornament ($ _post [" titlu "] ); $ ISBN \u003d addslasshes ($ isbn); $ autor \u003d addslasshes ($ autor); $ title \u003d addslasshes ($ titlu); $ db \u003d "eșantion"; $ link \u003d mysql_connect (); dacă (! $ Link) ("Imposibil de conectat la mysql"); mysql_select_db ($ db) sau matri ("Imposibil de deschis $ db"); $ query \u003d "Introduceți în valorile cărților (" $ ISBN "," "$ autorul. "", "" $ Titlu. "", "" FLOATVAL ($ _ Postați ["preț"]). "", "" .intval ($ _ Post ["Cantitate"]). "" " ) "$ rezultat \u003d mysql_query ($ interogare); dacă ($ rezultatul) eco" Cartea este adăugată la baza de date "; MySql_Close ($ link);?\u003e

În Exemplul 2.2, datele despre șir introduse sunt procesate de funcția addslashes (). Această caracteristică adaugă loviturile inverse la citate unice ("), citate duble ("), reacție (\\) și null-octeți. Faptul este că, în conformitate cu cerințele cererilor de baze de date Sistaksis, astfel de caractere sunt făcute în citate.

Pentru a determina numărul de înregistrări ca urmare a interogării utilizează funcția mysql_num_rows ().

Toate înregistrările rezultatului interogării pot fi vizualizate în ciclu. Înainte de a utiliza funcția mysql_fetch_ Array asociat este obținută pentru fiecare înregistrare.

În Exemplul 3.1, se arată o formă HTML să caute cărți specifice în baza de date.

Exemplul 3.1.

HTML-Form Găsirea cărților
Căutăm:

Ceea ce căutăm:



Rezultatele complete ale acestui formular sunt transmise în căutare_book.php.

Exemplul 3.2.

Vă rugăm să reveniți înapoi și să terminați intrările "); $ searsterm \u003d addslashes ($ căutare); $ link \u003d mysql_pconnect (); dacă (! $ Link) mor (" Nu se poate conecta la MySQL "); $ db \u003d" eșantion "; mysql_select_db ($ Db) sau matri ("Imposibil de deschis $ db"); $ query \u003d "Selectați * din cărți unde" $ _ Postați ["SearchType"]. " Cum ar fi "%". $ Searsterm. "%" ", Rezultatul $ \u003d mysql_query ($ query); $ n \u003d mysql_num_rows ($ rezultat); pentru ($ i \u003d 0; $ i<$n; $i++) { $row = mysql_fetch_array($result); echo "

"($ i + 1). $ rând [" titlu "]."



";) Dacă ($ n \u003d\u003d 0) ecou" nu poate oferi nimic. Ne pare rău "; mysql_close ($ link);?\u003e

Opțiune alternativă

Program de căutare de carte (File Search_book.php) Vă rugăm să reveniți înapoi și să finalizați intrarea "); $ searsterm \u003d addslashes ($ searsterm); mysql_connect () sau matriță (" incapabil să se conecteze la mysql "); mysql_select_db (" eșantion ") sau matri (" Imposibil de deschis o bază de date "); $ Rezultat \u003d mysql_query ("Selectați * din cărți în care" $ _ Postați ["căutaretype"]. "Ca"%. "$ Căutare."% ""); $ I \u003d 1; în timp ce ($ rând \u003d mysql_fetch_array Rezultat)) (ecou "

"($ I ++). $ Rând [" titlu "]."
"Echo" Autor: ". $ Rând [" autor "]."
"Echo" ISBN: "$ rând [" ISBN "]."
"ECHO" Preț: ". $ Rând [" preț "]."
"ECHO" Cantitate: "$ rând [" cantitate "]."

";) Dacă ($ i \u003d\u003d) ecou" nu poate oferi nimic. Ne pare rău "; mysql_close ();?\u003e

Deci, cum funcționează arhitectura bazei de date web:

  1. Browserul web al utilizatorului oferă o solicitare HTTP la o anumită pagină web. De exemplu, utilizatorul care utilizează formularul HTML caută toate cărțile PHP. Pagina de procesare a formei se numește căutare_book.php.
  2. Serverul Web acceptă o cerere de căutare_book.php, să recupereze acest fișier și să transfere mecanismul PHP.
  3. PHP efectuează o conexiune cu serverul MySQL și trimite o cerere.
  4. Serverul primește o cerere de bază de date, o procesează și trimite rezultatul (lista de cărți) înapoi mecanismul PHP.
  5. Mecanismul PHP completează execuția scriptului, formatează rezultatul interogării în HTML. După aceasta, rezultatul sub formă de HTML este returnat pe serverul web.
  6. Serverul Web trimite HTML în browser, iar utilizatorul are capacitatea de a vizualiza lista solicitată de cărți.

Utilizarea mecanismului de tranzacție

Folosind mecanismul de tranzacție cu privire la exemplul modului de transfer de bani de la o persoană la alta

Dacă (MySql_Query ("începe") && Bani Set Amt \u003d Amt ("Actualizați setul de bani AMT \u003d AMT - 6 unde numele \u003d" Eva ") && Bani Set Amt \u003d AMT + 6 în cazul în care numele \u003d" Ida ") && mysql_query (" Comiterea ")) (ecou" de succes ";) altceva (mysql_query (" Rollback "); Echo" nu are succes ";)

Selectați ... Pentru actualizare

Dacă executați mai multe procese care selectează solicitarea selectată la același tabel, ele pot alege aceeași înregistrare în același timp.

Pentru a evita situația menționată mai sus, este necesar să se efectueze nu doar o interogare selectată și versiunea sa extinsă pe care mulți oameni nu o suspectează: Selectați ... pentru actualizare.

Astfel, atunci când efectuați această interogare, toate intrările afectate din baza de date vor fi blocate până când sesiunea este finalizată din baza de date sau înainte de actualizarea acestor înregistrări. Un alt script nu va putea selecta înregistrări blocate până când nu apare una dintre condițiile de mai sus.

Cu toate acestea, nu toate atât de simple. Trebuie să efectuați mai multe condiții. În primul rând, masa dvs. trebuie creată pe baza arhitecturii INNODB. În caz contrar, blocarea pur și simplu nu va funcționa. În al doilea rând, înainte de a executa eșantionul, trebuie să dezactivați cererea de auto-comit. Acestea. Cu alte cuvinte, executarea automată a interogării. După ce specificați o solicitare de actualizare, va trebui să vă referiți din nou la baza de date și să comemorați modificările utilizând comanda comit:

MySQL este unul dintre tipurile de baze de date relaționale. MySQL este un server la care se pot conecta diverși utilizatori.

Când vă conectați la Internet, introduceți datele de conectare și parola, precum și numele serverului la care vă conectați? Când lucrați cu MySQL, se utilizează același sistem.

Un alt punct: Ce este o bază de date relațională? Mijloace relaționale bazate pe tabele. Celebrul editor de tabele Electronic Excel de la Microsoft este de fapt editor al bazelor de date relaționale.

Conectați-vă la serverul MySQL

Pentru a vă conecta la serverul MySQL, funcția MySqli_Connect () este utilizată în PHP. Această caracteristică primește trei argumente: numele serverului, numele de utilizator și parola.

Funcția MySqli_Connect () returnează identificatorul de conectare, este salvat într-o variabilă și sunt utilizate pentru a lucra cu baze de date.

Codul conexiunii la serverul MySQL:

$ link \u003d mysqli_connect ("localhost", "rădăcină", \u200b\u200b"");

În acest caz, lucrez la un computer local pe Denwere, deci numele gazdei este localhost, numele utilizatorului rădăcină, iar parola nu este.

Conexiunea trebuie, de asemenea, să fie închisă, după terminarea lucrărilor cu MySQL. Pentru a închide conexiunea, se utilizează funcția mysqli_close (). Extindeți exemplul:

$ link \u003d mysqli_connect ("localhost", "rădăcină", \u200b\u200b""); Dacă (! $ link) mor ("Eroare"); mysqli_close ($ link);

Aici am verificat identificatorul pentru adevăr, dacă ceva nu este în neregulă cu conexiunea noastră, atunci programul nu va fi executat, funcția Die () va opri execuția și afișează un mesaj de eroare al browserului.

Erori de conectare

Pentru a verifica conexiunea, se utilizează următoarele funcții:

  • mysqli_connect_errno () - Returnează codul de eroare al ultimei încercări de conexiune. Fără nici o eroare returnată zero.
  • mysqli_connect_error () - Returnează descrierea ultimei erori de conexiune la serverul MySQL.
Definiți ("gazdă", "localhost"); Definiți ("db_user", "rădăcină"); Definiți ("db_password", ""); Defini ("db", "tester"); $ link \u003d mysqli_connect (gazdă, db_user, db_password, db); / * Verificarea conexiunilor * / dacă (Mysqli_Connect_errno ()) (Printf ("nu a reușit să se conecteze:% s \\ n", mysqli_connect_error ()); ieșire ();) altceva (imprimare ("a reușit să se conecteze:% s \\ n" , mysqli_get_host_info ($ link));)

Funcția mysqli_get_host_info () returnează un șir care conține tipul de conexiune utilizat.

De asemenea, notați, utilizând comanda Defini, am salvat toate conexiunile în constante. Când scrieți proiecte mari și conectați-vă la serverul MySQL va fi mai multe fișiere, este convenabil să stocați setările de conexiune într-un fișier separat și să îl introduceți folosind funcția include sau necesită o funcție.

Selectați baza de date

Serverul MySQL poate avea mai multe baze de date. În primul rând, trebuie să alegem să lucrăm la baza de care avem nevoie. În PHP, pentru aceasta, în funcția MySqli_Connect (), există un alt parametru - numele bazei de date.

Am creat pe computerul meu prin intermediul testerului PhpMyadmin. Conectați-vă la acesta:

$ Link \u003d mysqli_connect ("localhost", "rădăcină", \u200b\u200b"", "tester"); Dacă (! $ link) mor ("Eroare"); Mysql_close ($ link);

Deci, am ales să lucrăm la baza de date. Dar, după cum știm, baza de date relațională constă din tabele, iar în baza noastră de date nu există încă tabele. Baza de date este creată goală, fără tabele. Tabelele în care trebuie adăugate separat. Aici, să adăugăm o masă cu PHP la ea.

Creați tabelul

În numele bazelor de date MySQL, partea SQL indică limba de interogare structurată, care este tradusă ca o limbă de interogare structurată. În limba SQL, vom scrie cereri și din programul PHP pentru a le trimite la serverul MySQL.

Pentru a crea un tabel, trebuie doar să specificăm comanda Creare tabel. Să creăm o masă cu numele utilizatorilor din coloanele care vor fi stocate de conectare (coloană de conectare) și parole (coloană de parolă).

$ Query \u003d "Creați utilizatori de tabel (Login Varchar (20), parola Varchar (20))";

În acest cod, am atribuit variabila de interogare $ la șirul de text, care este o interogare SQL. Creăm un tabel cu numele utilizatorilor, care conține două butoane de conectare și parolă a coloanelor, în ambele tipuri de date Varchar (20). Vom vorbi despre tipurile de date mai târziu, acum voi observa că Varchar (20) este un șir de lungimea maximă de 20 de caractere.

Pentru a trimite cererea noastră către serverul MySQL, folosim funcția PHP Mysqli_Query (). Această caracteristică returnează un număr pozitiv dacă operația a fost reușită și falsă dacă a apărut o eroare (sintaxa de interogare este eronată sau programul nu are drepturi de executare a interogării).

$ Link \u003d mysqli_connect ("localhost", "rădăcină", \u200b\u200b"", "tester"); Dacă (! $ link) mor ("Eroare"); $ Query \u003d "Creați utilizatori de tabel (Login Varchar (20), parola Varchar (20))"; Mysqli_query (£ interogarea); mysqli_close ($ link);

Interogarea SQL nu este necesară înregistrarea în variabilă, poate fi imediat scrisă ca argument al funcției MySQL_Query (). Doar codul va trimite citirea.

Acest script are un dezavantaj - el nu retrage nimic în browser. Să adăugăm un mesaj:

$ Link \u003d mysqli_connect ("localhost", "rădăcină", \u200b\u200b"", "tester"); Dacă (! $ link) mor ("Eroare"); $ Query \u003d "Creați utilizatori de tabel (Login Varchar (20), parola Varchar (20))"; Dacă (mysqli_query ($ query)) eco "a fost creată". Altcineva eco "nu a fost creată."; mysqli_close ($ link);

Dacă reporniți acest script pentru execuție, vom vedea un mesaj în browser: "Tabelul nu este creat". Faptul este că tabelul a fost creat atunci când începeți mai întâi și nu este posibil să creați o masă cu același nume. Am întâmpinat o situație de eroare, înseamnă că este timpul să vorbim despre procesarea erorilor atunci când lucrați cu MySQL.

Procesarea erorilor

La depanarea programului, este posibil să avem nevoie de informații exacte de eroare. Când apare o eroare în MySQL, serverul bazei de date stabilește numărul de eroare și șirul cu descrierea acesteia. Pentru a accesa aceste date în PHP există funcții speciale.

  • mysqli_errno () - returnează numărul de eroare.
  • mysqli_error () - Returnează un șir cu o descriere a erorii.

Acum, să adăugăm funcția mysql_error () la scriptul nostru:

$ link \u003d mysql_connect ("localhost", "rădăcină", \u200b\u200b"", "tester"); Dacă (! $ link) mor ("Eroare"); $ Query \u003d "Creați utilizatori de tabel (Login Varchar (20), parola Varchar (20))"; Dacă (mysqli_query ($ query)) eco "a fost creată". Altceva ecou "Tabelul nu este creat:" .mysqli_error (); mysqli_close ($ link);

Acum, scriptul nostru va reveni la șirul browserului: "Tabelul nu este creat: mesele" Utilizatorii "există deja".

Ștergeți tabelul

Deci, acum avem masa pe care nu o aveți nevoie. Este timpul să învățați să ștergeți tabelele din baza de date.

Pentru a șterge tabelul, utilizați comanda Table Drop, urmată de numele tabelului.

$ Link \u003d mysqli_connect ("localhost", "rădăcină", \u200b\u200b"", "tester"); Dacă (! $ link) mor ("Eroare"); $ Query \u003d "Utilizatori de tabel de drop"; Dacă (! Mysqli_Query ($ query)) Echo "Eroare la ștergerea unui tabel:" .mysqli_error (); Altceva echo "a fost șters."; mysqli_close ($ link);

Rezultate

Deci, am stăpânit elementele de bază ale MySQL. Ce am învățat să facem:

  • Conectați-vă la baza de date MySQL utilizând funcția MySqli_Connect ().
  • Închideți conexiunea la serverul MySQL utilizând funcția MySqli_Close ().
  • Trimiteți solicitări SQL către serverul MySQL utilizând funcția MySQLI_Query ().
  • Am învățat interogarea SQL pentru a crea o masă: Creați tabel.
  • Am învățat cererea SQL de a șterge tabelul: masa de scădere.
  • Am învățat cum să procesăm erori folosind funcțiile mysqli_errno () și mysqli_error ().

Apoi vom lua în considerare în detaliu tipurile de date MySQL.

Citim următoarea lecție:

Amintiți-vă acele vremuri când nu știam ce mysql. Și adesea a căutat astfel de articole pe Internet. Dar, din anumite motive, au fost rareori găsite. Acum am decis să stau astfel de articole utile despre mysql. și pHP. A devenit unul mai mult. Voi încerca să scriu totul într-un limbaj accesibil.

noțiuni de bază cu MySQL și PHP

Deci, pentru început, avem nevoie de un server local pentru a fi lansat scripturile PHP și conectați-vă la baza de date (apoi vom apela baza de date, ceea ce înseamnă "baza de date"). Dacă încă nu aveți un server local, trebuie mai întâi să citiți instalarea și configurația gazdă locală., apoi începeți să studiați baza de date mysql. și DBMS (înseamnă gestionarea bazei de date).

Dacă aveți deja acest server, facem acest lucru. Pentru a începe cu, vreau să vă prezint la DBMS Phpmyadmin.Vă permite să gestionați (adăugați, ștergeți, modificați) înregistrări în baza de date.

Aceasta este prima pagină Dbms phpmyadmin.. De aici puteți crea baza de date și puteți depozita intrările necesare în acesta. Este foarte convenabil la crearea de site-uri, deoarece informațiile sunt structurate și puteți obține foarte repede orice intrare din baza de date.

După cum sa menționat deja, prima parte a articolului, cunoștință cu mysql. și phpmyadmin.. Cred că acum înțelegeți ce este MySQL și putem începe să exploram funcționalitatea PhpMyadmin. Pentru a începe munca, trebuie să creăm baza de date în sine (baza de date). Ea va avea propriul nume pentru care o vom căuta mai târziu.

Iată structura generală a structurii bazei de date:

Pentru a crea o bază de date, introduceți în câmpul de introducere din linia "Creați o nouă bază de date" (pe pagina principală a phpmyadminului) orice nume (nu chirilic!) Pentru baza viitoare. Voi crea o bază de date numită "Baza". Acum, după diagrama structurii BD, trebuie să facem o masă. Pentru a face acest lucru, după crearea bazei, veți avea o astfel de fereastră:

Aici creez o masă cu numele utilizatorilor și 3 câmpuri în ea. Alte PhpMyAdmin ne va cere să stabilim structura fiecărui domeniu:

Aici, în coloana "Field", trebuie să specificați numele, în "Tipul" Specificați tipul de date care vor fi stocate acolo (int este numărul, linia Varchar sau textul mic (!)). În plus, specificați câmpul numit "ID" Parametru "Auto_increament", ceea ce înseamnă că va crește de fiecare dată când introduceți orice date și setați parametrul "Cheia primară" (puneți o rulare), înseamnă că în prima coloană putem identificați cu siguranță câmpul.

"În mod sigur identifică câmpul" înseamnă chiar dacă numele și prenumele vor fi aceleași, coloana de identificare va avea valori diferite (deoarece crește automat pe unitate de fiecare dată).

Acum faceți clic pe "Salvați". Astfel, am creat un tabel de utilizatori în care putem stoca numele și prenumele (nu trebuie introdus ID-ul, MySQL va face totul pentru noi), în utilizatorii de baze de date. Am creat tabelul pentru stocarea înregistrărilor. Și cum să le inserați acolo? Cititi mai jos

Selectați în meniul "Paste" și scrieți valorile dorite în câmpurile necesare. Acum, cum să ștergeți sau să modificați valorile din baza de date MySQL din baza de date PHPMYADMIN ... pentru a șterge, du-te la meniul de prezentare și apăsați pe capul roșu opus înregistrare:

Și pentru editare, faceți clic pe creion și înlocuiți câmpurile necesare. Ei bine, pe această lecție este terminată. Acum puteți gestiona baza de date MySQL folosind PhpMyAdmin. În următoarea lecție, vă voi învăța să stocați, să primiți, să ștergeți și să actualizați datele din baza de date folosind PHP.. Este foarte convenabil și practic.

Lucrul cu baza de date MySQL de la PHP

Deci, mai întâi trebuie să învățați să vă conectați la baza de date deja creată. Pentru a face acest lucru, acest cod este utilizat:

În codul de mai sus, am conectat la serverul localhost folosind autentificarea rădăcină. care nu necesită o parolă (prin urmare, nu o specificați). După conectarea la baza de date, putem realiza toate operațiunile care au fost efectuate în PhpMyAdmin. Aceasta este, introduceți, ștergeți, modificați și obțineți diverse informații. Acum, pe puncte:

Introduceți intrările în baza de date SQL pe PHP

$ Query \u003d "Introduceți în" tabelul "(" Point câmpul "," Specificați câmpul ") (" orice valoare "," orice valoare ")"; $ rezultat \u003d mysql_query (£ interogare); Dacă ($ rezultatul \u003d\u003d TRUE) (Echo "de succes!";) altceva (ECHO "Eroare!
".mysql_error ();)

Adică, inserția se face prin funcția de inserție. Dacă totul a mers cu succes, MySQL va returna rezultatul adevărat sau altfel - fals.

Câmpurile pot fi specificate cel puțin cât de mult, principalul lucru este că toți au existat în baza de date. Aceasta este, de exemplu, există o masă în care există câmpuri "nume", "prenume" și "oraș". Pentru a introduce în ea, vom folosi un astfel de cod:

$ Query \u003d "Introduceți în" Numele utilizatorilor "," Numele "," orașul ") (" Ruslan "," Huzin "," Kokhetau ")"; $ rezultat \u003d mysql_query (£ interogare); Dacă ($ rezultatul \u003d\u003d TRUE) (Echo "de succes!";) altceva (ECHO "Eroare!
".mysql_error ();)

Eliminarea intrărilor din baza de date SQL la PHP

Ștergerea este efectuată de funcția de ștergere. Pentru aceasta va fi ceva de genul acestui cod:

$ Query \u003d "Ștergeți de la" Utilizatori "în cazul în care" numele "\u003d" Ruslan ""; $ rezultat \u003d mysql_query (£ interogare); Dacă ($ rezultatul \u003d\u003d TRUE) (Echo "de succes!";) altceva (ECHO "Eroare!
".mysql_error ();)

Asta este, ștergem toate liniile din tabelul USSS (bine sau unu), în care coloana de nume este egală cu valoarea Ruslan.

Schimbarea valorilor din baza de date MySQL pe PHP

De asemenea, putem face schimbări în înregistrările deja existente în tabel. De exemplu, trebuie să înlocuim valoarea coloanei de nume la rând, unde coloana de familie este Huzin. Pentru a face acest lucru, efectuați un astfel de cod:

$ Query \u003d "Update` set de utilizatori" Nume` \u003d "MyName" unde "numele de familie" \u003d "Huzin"; $ rezultat \u003d mysql_query (£ interogare); Dacă ($ rezultatul \u003d\u003d TRUE) (Echo "de succes!";) altceva (ECHO "Eroare!
".mysql_error ();)

Obținerea valorilor din baza de date

Acum cel mai interesant. Odată ce am înregistrat ceva, atunci ar trebui să vă întoarceți? De exemplu, trebuie să obținem de la mese de utilizatori toată linia în care coloana de nume este egală cu Ruslan. Pentru a face acest lucru, avem nevoie de un cod mic decât în \u200b\u200bprimele exemple. Iată de fapt el:

$ Query \u003d "Selectați * de la data" Nume "\u003d" Ruslan ""; $ rezultat \u003d mysql_query (£ interogare); Dacă ($ rezultatul \u003d\u003d TRUE) (Echo "de succes!";) altceva (ECHO "Eroare!
".mysql_error ();) $ da date \u003d mysql_fetch_array ($ rezultat); / * Acum datele din tabel sunt stocate în variabila * /

Aici aveam nevoie de o altă caracteristică, pentru a înregistra datele selectate în variabila (matrice) pe PHP. Pentru a contacta șirul selectat, scriem astfel:

$ Date ["Nume coloana"]

adică pentru a obține numele de familie de la linia selectată (în cazul în care numele a fost Ruslan), ar trebui să scriem la concluzia:

eCHO $ \u200b\u200bDate ["Prenume"];

Și când eșantionarea de la masă, am scris Selectați *, acest asterisc înseamnă că trebuie să selectați toate coloanele din șir. Dacă avem nevoie, de exemplu, alegem numai numele de familie, scrieți selectați "Număr de familie". Și pentru eșantionarea la o dată mai multe linii de la masă, ciclul va fi, de asemenea, necesar pentru producția lor. Acest lucru este, de exemplu, rândurile cu coloana Ruslan vor fi mai multe. Iată codul:

$ Query \u003d "Selectați * de la data" Nume "\u003d" Ruslan ""; $ rezultat \u003d mysql_query (£ interogare); în timp ce ($ date \u003d mysql_fetch_array ($ rezultat)) (ECHO $ \u200b\u200bDate ["Nume"]. "
"$ Date [" prenume "]."


"; }

Acum toate liniile din care vor fi afișate coloana de nume egală cu valoarea lui Ruslan.

Aici ați întâlnit funcțiile principale de control baza de date MySQL. direct de la pHP Script..