internetul Windows. Android

Exemplu PHP cu MySQL. Bazele de lucru cu PHP Mysqli

În legătură cu rezilierea suportului MySQL PHP în 2011, DOP sau PDO-uri sunt utilizate pe deplin pentru a lucra cu baze de date Mysqli.. Acestea au o funcționalitate mai bună (decât MySQL) și oferă API OOP (interfață orientată spre obiect). Care dintre ele este mai bună, acesta este un subiect pentru un alt articol, în acest articol vom încerca să ne ocupăm de elementele de bază ale muncii cu Mysqli. Prin urmare, fără prefabricate ulterioare, ne întoarcem la conexiune (Connect), selectați (selectați), Inserați (Insert), Actualizări (Actualizare) și Ștergere (Date / Documente / Informații) prin intermediul PHP Mysqli. Sper că acest articol va fi util în rezolvarea problemelor care pot apărea atunci când lucrează cu PHP Mysqli.

Instalarea Mysqli.

Când utilizați PHP Versiunea 5.3.0 +, MySqli este disponibil în mod implicit; Pentru versiunile mai vechi pentru a le pune la dispoziție, trebuie să activați php_mysqli.dll dll în interiorul fișierului php.ini. și editați php.ini, revitalizarea extensiei liniei \u003d php_mysqli.dll. În Linux, MySqlII va fi instalat automat la instalarea pachetului MySQL PHP5. Pot fi găsite mai multe informații despre instalarea în sistemele Windows și Linux.

Conectarea bazei de date

Mysqli oferă două modalități de conectare la baza de date: procedurală și orientată pe obiecte. Se recomandă utilizarea orientată spre obiecte. Procedura este similară cu (vechi) mysql, deci va fi preferabilă pentru începători, va fi preferabil să ne amintim că nu sunt recomandați să o folosească.

PHP.

// stil procedural $ mysqli \u003d mysqli_connect ("gazdă", "nume de utilizator", "parola", "Database_name"); // stil orientat obiect (recomandat) $ mysqli \u003d noul mysqli ("gazdă", "nume de utilizator", "parola", "Database_name");

Mai jos este deschiderea unei conexiuni cu baza de date a metodei orientate pe obiecte. Această metodă va fi utilizată în toate exemplele de mai jos.

PHP.

connect_Error) (Die ("Eroare: (" $ mysqli-\u003e Connect_errno. ")" $ Mysqli-\u003e connect_error);)?\u003e

Selecție (SELECT) Seria rezultată sub forma unei matrice asociative

mysqli_fetch_assoc (): În codul de mai jos, intervalul de rezoluție rezultat este extras sub formă de matrice asociativă. Matricea returnată conține rânduri obținute din baza de date în care numele coloanei vor fi cheia utilizată pentru a accesa datele interne. După cum se arată mai jos, datele sunt afișate ca o masă HTML.

PHP.

connect_Error) (Die ("Eroare: (" $ mysqli-\u003e Connect_errno. ")" $ Mysqli-\u003e Connect_error);) // mysqli selectați interogare $ rezultate \u003d $ mysqli-\u003e "; În timp ce ($ Row \u003d $ rezultate-\u003e fetch_assoc () (imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare"";) Imprimare"
"$ rând [" id "].""$ Rând [" produs_code "].". "$ rând [" produs_name "].""$ rând [" produs_desc "].""$ rând [" preț "]."
"; Eliberează memoria asociată cu rezultatele rezultatelor $-\u003e Free (); // Închide conexiune $ mysqli-\u003e close ();?\u003e

Selecție (selectați) Rândul rezultat sub formă de matrice (asociativă, normală sau ambele)

Fuctition Fetch_Array (): Returnează o matrice cu funcționalitatea combinată a Mysqli_fetch_row și MySqli_Fetch Conf. Această caracteristică este o versiune extinsă a funcției mysqli_fetch_row (); Pentru accesul la date, puteți utiliza atât șirul, cât și numerele.

PHP.

connect_Error) (Die ("Eroare: (" $ mysqli-\u003e Connect_errno. ")" $ Mysqli-\u003e Connect_error);) // mysqli selectați interogare $ rezultate \u003d $ mysqli-\u003e interogare ("selectați id, produs_code, produs_desc, Preț din produse "); Imprimare " fetch_array () (imprimare "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare"";) Imprimare"
"$ rând [" id "].""$ Rând [" produs_code "].". "$ rând [" produs_name "].""$ rând [" produs_desc "].""$ rând [" preț "]."
"; Eliberează memoria asociată cu rezultatele rezultatelor $-\u003e Free (); // Închide conexiune $ mysqli-\u003e close ();?\u003e

Selectați (selectați) seria rezultată ca obiect

fETCH_OBJECT (): Pentru a obține un set rezultat sub forma unui obiect, trebuie să utilizați MySqli Fetch_Object (). Atributele obiectului vor afișa numele câmpului găsite în interiorul setului rezultat.

PHP.

connect_Error) (Die ("Eroare: (" $ mysqli-\u003e Connect_errno. ")" $ Mysqli-\u003e Connect_error);) // mysqli selectați interogare $ rezultate \u003d $ mysqli-\u003e interogare ("selectați id, produs_code, produs_desc, Preț din produse "); Imprimare " "; În timp ce ($ rând \u003d $ rezultate-\u003e fetch_object ()) (imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare"";) Imprimare"
"$ rând-\u003e id.""$ Rând-\u003e produs_code.""$ rând-\u003e produs_name.""$ Rând-\u003e produs_desc.""$ rând-\u003e preț."
"; // Închide conexiune $ mysqli-\u003e close ();?\u003e

Selectați (selectați) Valoare unică

Puteți obține o singură valoare din baza de date utilizând Fetch_Object (metoda CAMERON SPEAR).

PHP.

connect_Error) (Die ("Eroare: (" $ mysqli-\u003e Connect_errno. ")" $ Mysqli-\u003e Connect_Error);) // langa funcții PHP $ produs_name \u003d $ mysqli-\u003e query ("selectați produs_name de la produse unde id \u003d 1 ") -\u003e fetch_object () -\u003e produs_name; Imprimați $ produs_name; // valoarea de ieșire $ mysqli-\u003e close (); ?\u003e

Eliminați (selectați numărul) Numărul de rânduri din tabel

Uneori trebuie să aflați numărul de rânduri din tabel, mai ales la paginile de numerotare.

PHP.

connect_Error) (Die ("Eroare: (" $ mysqli-\u003e Connect_ERRNO. ")" $ Mysqli-\u003e Connect_error);) // obțineți numărul total de înregistrări $ rezultate \u003d $ mysqli-\u003e interogare ("selectați numărul (*) De la utilizatori "); $ get_total_rows \u003d $ rezultate-\u003e fetch_row (); // țineți înregistrările totale în variabile $ mysqli-\u003e close (); ?\u003e

Selectați (declarații pregătite)

state pregătite. - Instrument special DBMS care vă permite să accelerați execuția secvențială a interogărilor repetate construite de același șablon.

Una dintre caracteristicile Mysqli este abilitatea de a folosi șabloanele deja scrise: adică cererea este suficientă pentru a scrie o dată, după care poate fi executată în mod repetat cu diverși parametri. Utilizarea șabloanelor deja scrise îmbunătățește performanța pentru mesele mari și interogări complexe. Pentru a preveni codul rău intenționat pentru a preveni analiza fiecărei solicitări se face separat de server.

Codul de mai jos utilizează șablonul (instrucțiunea pregătită) pentru a primi date din baza de date. Agregat ? Interogarea SQL joacă rolul markerului și va fi substituit cu un parametru care, la rândul său, poate fi un șir, un număr întreg, dublu sau blob. În cazul nostru, acesta este un rând $ căutare_product.

PHP.

$ search_product \u003d "PD1001"; // ID de produs // Creați o declarație pregătită $ query \u003d "Selectați ID, produs_code, produs_desc, prețul produselor în care produs_code \u003d?"; $ declarație \u003d $ mysqli-\u003e Pregătiți (£ interogarea); // legați parametrii pentru markeri, unde (S \u003d String, I \u003d Integer, D \u003d Double, B \u003d Blob) $ Decizie-\u003e Bind_Param ("S", $ Search_Product); // Executați instrucțiunile de interogare -\u003e Executați (); // variabilele rezultate ale rezultatelor $-\u003e "; // preluați înregistrări în timp ce ($ situația-\u003e Fetch ()) (Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare"";) Imprimare"
"$ Id"."$ produs_code.""$ Produs_desc.""$ Preț".
"; // închideți conexiunea $ -\u003e Închide ();

Aceeași solicitare cu mai mulți parametri:

PHP.

$ search_id \u003d 1; $ search_product \u003d "PD1001"; $ Query \u003d "Selectați ID, produs_code, produs_desc, prețul produselor în cazul în care ID \u003d și produs_code \u003d?"; $ declarație \u003d $ mysqli-\u003e Pregătiți (£ interogarea); $ Declarație-\u003e BIND_PARAM ("este", $ search_id, $ sears_product); $ Declarație-\u003e Executați (); $ Declarație-\u003e BIND_RESULT ($ ID, $ PRODUCT_CODE, $ PRODUCT_DESC, $ PRET); Imprimare " "; În timp ce ($ Decnare-\u003e Fetch ()) (Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare" "; Imprimare"";) Imprimare"
"$ Id"."$ produs_code.""$ Produs_desc.""$ Preț".
"; // închideți conexiunea $ -\u003e Închide ();

Introduceți (inserați) înregistrările

Înregistrarea de mai jos introduce un nou rând la masă.

PHP.

real_escape_string ("P1234"). "" $ Produs_name \u003d "" $ mysqli-\u003e real_escape_string ("42 inch tv"). "" $ Produs_price \u003d "" $ mysqli-\u003e real_escape_string ")." ""; . $ Mysqli-\u003e insert_id. "
";) Altceva (mor (" Eroare: ("$ mysqli-\u003e errno.") "$ Mysqli-\u003e eroare);)?\u003e

Un extras de mai jos introduce aceleași valori prin șabloane (declarația pregătită). După cum am spus, șabloanele sunt extrem de eficiente împotriva injecției SQL. Pentru exemplul de mai sus, utilizarea lor este opțiunea optimă.

PHP.

// valori care trebuie introduse în tabelul de date $ PRODUCT_CODE \u003d "P1234"; $ product_name \u003d "42 inch TV"; $ produs_price \u003d "600"; $ Query \u003d "Introduceți în produse (produs_code, produs_name, preț) valori (?,?,?)"; $ declarație \u003d $ mysqli-\u003e Pregătiți (£ interogarea); . Dacă ($ Decizie-\u003e Execute ()) (Imprimare "Succes! ID-ul înregistrării introduse ulterior este:" $ Decizie-\u003e Insert_ID ".
";) Altceva (mor (" Eroare: ("$ mysqli-\u003e errno.") "$ Mysqli-\u003e eroare);) $ Declarație-\u003e Închidere ();

Introduceți (inserați) înregistrări multiple

Inserția mai multor rânduri este efectuată simultan prin comutarea unui număr de valori ale coloanei, în care fiecare rând de valori trebuie aplicat în paranteze și separate de alte localități. Uneori trebuie să știți câte intrări au fost introduse, actualizate sau eliminate, pentru aceasta puteți utiliza mysqli_affecat_rows.

PHP.

// produs 1 $ produs_code1 \u003d "" $ mysqli-\u003e real_escape_string ("p1"). "" "; $ product_name1 \u003d "" $ mysqli-\u003e real_escape_string ("google Nexus"). "" "; $ produs_price1 \u003d "". "$ mysqli-\u003e real_escape_string (" 149 ")." ""; // produs 2 $ produs_code2 \u003d "" $ mysqli-\u003e real_escape_string ("p2"). ""; $ produs_name2 \u003d "" $ mysqli-\u003e real_escape_string ("Apple iPad 2"). "" "; $ produs_price2 \u003d "". "$ mysqli-\u003e real_escape_string (" 217 ")." ""; // produs 3 $ produs_code3 \u003d "" $ mysqli-\u003e real_escape_string ("p3"). "" "; $ produs_name3 \u003d "" $ mysqli-\u003e real_escape_string ("Samsung Galaxy Nota"). "" "; $ produs_price3 \u003d "" $ mysqli-\u003e real_escape_string ("259") "" "; // introduceți mai multe rânduri $ Insert \u003d $ mysqli-\u003e interogare ("inserați în produse, produs_code, produs_name, $ produs_name1), ($ produs_code2, $ produs_name2, $ produs_price2), ($ produs_code3, $ produs_name3, $ produs_price3 ); Dacă ($ Insert) (// returnați înregistrările totale introduse utilizând MySqli_Afffecat_rows Imprimare "Succes! Total." $ Mysqli-\u003e afectat "." Rânduri adăugate.
";) Altceva (mor (" Eroare: ("$ mysqli-\u003e errno") "$ mysqli-\u003e eroare);)

Actualizați / ștergeți înregistrarea (Ștergere)

Actualizarea principiilor și ștergerea înregistrărilor la fel. Este suficient să înlocuiți șirul de interogare pe actualizarea MySQL sau să ștergeți (nu înțeleg, uita-te la ea).

PHP.

// Mysqli Update Query $ rezultate \u003d $ mysqli-\u003e interogare ("Actualizare produse set produs_name \u003d" 52 inch tv ", produs_code \u003d" 323343 "unde id \u003d 24"); // mysqli șterge interogare // $ rezultate \u003d $ mysqli-\u003e query ("Șterge din produse unde id \u003d 24"); Dacă ($ rezultate) (Print "Succes! Înregistrare actualizată / șters";) altceva (imprimare "eroare: (" $ mysqli-\u003e errno ")" $ mysqli-\u003e eroare;)

Declarații pregătite

Un exemplu de actualizare a înregistrării utilizând șabloane (state pregătite) este prezentat mai jos.

PHP.

$ produs_name \u003d "52 inch TV"; $ produs_code \u003d "9879798"; $ Find_ID \u003d 24; $ Query \u003d "Actualizați produsele set produs_name \u003d?? produs_code \u003d? Unde id \u003d?"; $ declarație \u003d $ mysqli-\u003e Pregătiți (£ interogarea); // legați parametrii pentru markeri, unde (S \u003d String, I \u003d Integer, D \u003d Double, B \u003d Blob) $ Rezultate \u003d $ Declarație-\u003e BIND_PARAM ("SSI", $ produs_name, $ produs_code, $ Find_ID); dacă ($ rezultate) (imprimare "succes! înregistrare actualizat";) altceva (imprimare "eroare: (" $ mysqli-\u003e errno ")" $ mysqli-\u003e eroare;)

Îndepărtarea înregistrărilor vechi

Toate intrările de pe server sunt pe server sunt mai mult de o zi sunt șterse; Numărul de zile poate fi setat.

PHP.

// mysqli șterge interogare $ rezultate \u003d $ mysqli- (Acum () - interval de 1 zi) "); dacă ($ rezultate) (imprimare" Succes! Șterted o singură zi înregistrări vechi ";) altceva (imprimare": ("$ mysqli- Concluzie

Fără îndoială, Mysqli este semnificativ mai bun decât expansiunea standard MySQL PHP, deși principiile muncii lor sunt destul de asemănătoare. Sper că informațiile de mai sus vor fi utile la crearea și transferarea proiectelor în viitor. Pentru comoditate, au fost implementate următoarele informații pentru descărcarea de fișiere. Acest lucru se poate face făcând clic pe butonul de descărcare.

Lucrul cu baza de date MySQL cu RNR

Lectura. PROKHOROV preparat vs.


1. Conectarea scenariilor PNP cu mesele MySQL

Luați în considerare cele mai frecvent utilizate caracteristici care vă permit să lucrați cu baza de date MySQL de către RNR.

Când RNR și MySQL interacționează, programul interacționează cu DBMS prin intermediul unui set de funcții.

1.1 Conectarea la server. Funcţie mysql_connect.

Înainte de a lucra cu baza de date, trebuie să instalați o conexiune la rețea, precum și să autorizați utilizatorul. Aceasta este funcția mysql_connect ().

resurse Mysql_Connect (]])

Această caracteristică stabilește conexiunea la rețea la baza de date MySQL situată pe gazda Serverului $ (implicit este localhost, adică computerul curent) și returnează un identificator de conexiune deschisă. Toate lucrările ulterioare se desfășoară cu acest identificator. Toate celelalte funcții care ia acest identificator (descriptor) ca argument vor defini în mod unic baza de date selectată. La înregistrare, numele de utilizator este $ Nume de utilizator și parola de parolă $ (în mod implicit, numele de utilizator din care funcționează procesul curent - când depanează scripturi: root și o parolă goală):

$ dbpasswd \u003d ""; //Parola

// afișați un avertisment

echo ("

");

Variabile $ dblococație, $ dbuser și $ dbpasswd magazin nume server, nume de utilizator și parolă.

1.2 Trimiteți conexiunea la server. Funcţie mysql_close.

Conectarea la serverul MySQL va fi închisă automat la sfârșitul scriptului sau când apelați funcția MySQL_Close

bool mysql_close ()

Această caracteristică sparge conexiunea la serverul MySQL și returnează adevărat cu execuția cu succes a operațiunii și a fals altfel. Funcția acceptă un descriptor de conectare la baza de date ca argument returnat de funcția MySQL_CONNECT.

$ dblocation \u003d "localhost"; // Numele serverului

$ dbuser \u003d "rădăcină"; //Nume de utilizator

$ dbpasswd \u003d ""; //Parola

// Introduceți conexiunea la serverul de baze de date

// suprima simbolul de ieșire de eroare @ înainte de a apela funcția

$ dbcnx \u003d @ mysql_connect ($ dblococ, $ dbuser, $ dbpasswd);

dacă (! $ dbcnx) // Dacă descriptorul este 0, conexiunea nu este instalată

// afișați un avertisment

echo ("

B Acum serverul de baze de date nu este disponibil, deci afișarea corectă a paginii este imposibilă.");

dacă (mysql_close ($ dbcnx)) // rupe conexiunea

eCHO (Conectarea la baza de date este întreruptă ");

echo ("a reușit să finalizeze conexiunea");

1.3 Crearea unei baze de date. Creați caracteristica bazei de date

Comanda - Crearea unei baze de date este disponibilă numai administratorului de server și, pe cea mai mare găzduire, este imposibil să o efectuați:

Creați nume de bază de date bazat pe

Creează o nouă bază de date cu numele legării numelui.

Un exemplu de lucru cu această caracteristică:

@Mysql_Query ("Creați baza de date $ dbname");

Se recomandă utilizarea apostrofelor peste tot ("SQL - comanda") ca limitatoare ale liniilor care conțin comenzi SQL. Acest lucru se poate asigura că nici o variabilă nu va fi interpolată accidentală (adică nu va fi înlocuită cu valoarea sa), iar siguranța scripturilor va crește.

Comanda Creare Baza de date a bazei de date este disponibilă numai la SuperUser, și este imposibil să efectuați un utilizator simplu pe majoritatea utilizatorilor de găzduire. Este disponibil numai administratorului de server.

Pentru experimente, creați o bază de date de testBase prin efectuarea unei interogări SQL din linia de comandă. Pentru a face acest lucru, conectați-vă la sistemul MySQL și introduceți MySQL pe promptul de comandă:

mySQL\u003e Creați test de bază de baze de date;

După aceea, ar trebui să formați:

mySQL\u003e Utilizați testBase;

Baza de date este creată:



1.4 Selectați baza de date. Funcţie mysql_select_db.

Înainte de a trimite prima solicitare către serverul MySQL, trebuie să specificați care baza de date pe care o vom lucra. În acest scop, funcția MySQL_SELECT_DB este destinată:

bOOL MySQL_SELECT_DB (String $ Database_name [, Resurse $ link_identifier])

Ea notifică PHP că, în alte operațiuni, cu o conexiune $ Link_identifier, va fi folosit $ nume de date_name.

Folosind această funcție este echivalentă cu Apelarea unei comenzi de utilizare într-o interogare SQL, adică funcția MySQL_SELECT_DB selectează o bază de date pentru lucrări ulterioare și toate interogările SQL ulterioare se aplică la baza de date selectată. Funcția ia numele bazei de date selectate de baze de date_name ca argumente și descriptorul conexiunii de resurse. Funcția returnează adevărată cu funcționarea cu succes și fals - în caz contrar:

// Codul conexiunii cu baza de date

dacă (! @MYSQL_SELECT_DB ($ dbname, $ dbcnx))

// afișați un avertisment

echo ("

B Acum baza de date nu este disponibilă, astfel încât afișajul corect al paginii nu este posibil.");

1.5 Erori de procesare

Dacă apar erori în timpul lucrului cu MySQL (de exemplu, instrucțiunile nu sunt echilibrate sau nu sunt suficiente parametri), apoi mesajul de eroare și numărul acestuia pot fi obținute utilizând cele două funcții descrise mai jos.

Este important să fie cu atenție și să folosiți aceste funcții în timp util, deoarece altfel depanarea scripturilor poate deveni mai complicată.

● Funcție:

int mysql_errno ()

returnează numărul celei mai recente erori înregistrate. Nu puteți specifica identificatorul de conexiune $ link_IdentSfier dacă a fost instalată doar o singură conexiune în timpul timpului de funcționare a scriptului.

● Funcție:

string mysql_error ()

returnează un număr, ci un șir care conține textul mesajului de eroare. Este convenabil să se aplice în scopuri de depanare. De obicei, MySQL_Error este utilizat cu designul sau matrița (), de exemplu:

@MySql_Connect ("localhost", "utilizator", "parola")

sau mor ("Eroare la conectarea la o bază de date:" .mysql_error ());

Operatorul @, ca de obicei, este utilizat pentru a suprima avertismentul standard, care poate apărea în cazul unei erori.

În cele mai recente versiuni ale avertismentului RNR în funcțiile MySQL nu sunt înregistrate în mod implicit.

1.6 Conectarea la MySQL. Fișier ( config.php. )

De obicei, pe site există mai multe script-uri simultan, pe care aveți nevoie de acces la aceeași bază de date.

Codul responsabil pentru conectarea la MySQL este recomandat să fie evidențiat într-un fișier separat și apoi conectați utilizând funcția Include la scripturile dorite.

Este logic de a plasa funcții pentru conectare, selectare și creare a unei baze de date în același fișier (config.php), unde variabilele sunt declarate cu numele serverului $ DBLOCACAM, numele de utilizator DBUSER, parola $ dbpasswd și numele de Numele de bază de date $ DBNAME:

CONFIG.PHP Listing:

//config.php Codul fișierului care conține parametrii de conectare cu selecția serverului și a bazei de date

// afișează mesaje de eroare către browser

$ dblocation \u003d "localhost"; // Numele serverului

$ dbname \u003d "inserați numele de bază" // Numele bazei de date: creat sau deja existent

$ dbuser \u003d "rădăcină"; // Numele utilizatorului bazei de date

$ dbpasswd \u003d ""; //Parola

// Introduceți conexiunea la serverul de baze de date

// suprima simbolul de ieșire de eroare @ înainte de a apela funcția

[E-mail protejat]_Connect ($ dblococ, $ dbuser, $ dbpasswd);

dacă (! $ dbcnx) // Dacă descriptorul este 0, conexiunea la serverul de baze de date nu este instalată

// afișați un avertisment

echo ("

În prezent, serverul de baze de date nu este disponibil, deci afișarea corectă a paginii este imposibilă.

");

// Creați o bază de date $ DBNAME - poate face doar un superuser

// Dacă există deja baza de date, va exista o eroare non-critică

@Mysql_Query ("Creați baza de date dacă nu există $ DBNAME ');

// Codul conexiunii cu o bază de date: realizăm o selecție neechivocă a bazei de date nou create sau a unei baze de date existente

// suprima simbolul de ieșire de eroare @ înainte de a apela funcția

dacă ( [E-mail protejat]_Select_db ($ dbname, $ dbcnx)) // Dacă descriptorul este 0, conexiunea bazei de date nu este instalată

// afișați un avertisment

echo ("

În prezent, baza de date nu este disponibilă, astfel încât afișarea corectă a paginii este imposibilă.

");

// funcția mică auxiliară care afișează mesajul

// despre eroarea în cazul unei erori de solicitare a bazei de date

funcția Puterror ($ mesaj)

echo ("");



2. Efectuați interogări de bază de date

2.1 Crearea unui tabel. Funcţie Creați tabel:

Creați numele tabelului de tabel (tipul de nume, tipul de nume,)

Această comandă din baza de date creează o nouă masă cu coloane (câmpuri), definite prin propriile sale nume (nume) și de tipuri specificate. După crearea tabelului, va fi posibilă adăugarea înregistrărilor constând din câmpurile enumerate în această comandă.

Listing test_11.php. Un program care creează un nou tabel în baza de date:

includeți "config.php"; // Conectați la selectarea serverului și a bazei de date

mysql_query ("Creați tabel dacă nu există oameni

id int auto_increment cheie cheie,

sau mor ("eroare MySQL:" .mysql_error ());



Acest script creează o masă de oameni noi cu două câmpuri. Primul câmp are un ID Type (Integer) și numele de nume. Al doilea text Tip (șir de text) și numele de nume.

Dacă există tabelul, designul sau matrița va funcționa.

Fraza opțională Dacă nu depășește, dacă este specificată, spune serverul MySQL, că nu ar trebui să genereze un mesaj de eroare dacă tabelul cu numele specificat există deja în baza de date.

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:

3 Metode de conectare la MySQL cu PHP cu exemple de cod


Pentru a începe să utilizați baza de date MySQL, trebuie mai întâi să înțelegeți cum să vă conectați de la programul PHP PHP (Script) în această bază de date MySQL.

Acest articol descrie următoarele trei metode, precum și exemplele corespunzătoare ale codului PHP, care explică modul de conectare la baza dvs. de date din PHP.

Pentru toate exemplele de mai jos, vă vom conecta la o bază de date MySQL deja existentă. Notă: Tot ceea ce este explicat aici va lucra și cu Mariadb, precum și cu MySQL.

1. Conectați-vă la PHP utilizând extensia Mysqli
*mysqli înseamnă MySQL sa îmbunătățit

Creați următorul fișier mysqli.php

connect_Error) (Die ("Eroare: Imposibil de conectat:" $ Conn-\u003e Connect_Error);) Echo "conectat la baza de date.
"$ rezultat \u003d $ Conn-\u003e Query (" selectați ID de la Goroda "); Echo" Număr de rânduri: $ rezultat-\u003e Num_rows "; $ rezultat-\u003e Închide (); $ Conn-\u003e Închidere (); În codul de mai sus:

  • mySqli - Această caracteristică inițiază o nouă conexiune utilizând extensia Mysqli. Funcția durează patru argumente:
    1. numele gazdei localhost pe care se execută baza de date MySQL
    2. nume - numele de utilizator MySQL pentru conectare
    3. pass - Parola pentru utilizatorul MySQL
    4. dB - Baza de date MySQL pentru conexiune.
  • qvery - funcția de interogare MySQL. În acest exemplu, alegem un ID de coloană din baza de date a orașelor.
  • În cele din urmă, arătăm numărul de rânduri selectate utilizând variabila Num_rows ca rezultat. De asemenea, închidem atât rezultatul, cât și variabila de conectare, după cum se arată mai sus.
Când apelați mysqli.php de mai sus din browserul dvs., veți vedea următoarea ieșire care indică faptul că PHP a putut să se conecteze la baza de date MySQL și să primească date.

Conectat la baza de date. Numărul de rânduri: 6 2. Conectați-vă de la extensia PHP MySQL DOP
*DOP înseamnă obiecte de date PHP

Driverul DO_MYSQL implementează interfața DOP furnizată de PHP pentru a vă conecta de la scriptul PHP în baza de date MySQL.

Creați următorul fișier MySQL-DOP.PHP:

setTtribute (DOP :: Attr_ermode, DOP :: Errmode_Exception); Eco "conectat la baza de date.
"$ Sql \u200b\u200b\u003d" Selectați ID-ul de la Goroda "; Imprimare" ID lista:
"; FOREACH ($ Conn-\u003e Interogare ($ sql) ca $ rând) (imprimați $ rând [" ID]. "
";) $ Conn \u003d null;) Catch (ECHO" Eroare: Imposibil de conectat: "$ err-\u003e getMessage ();)?\u003e În cele de mai sus:

  • noul DOP - Creați un nou obiect DOP, care va lua următoarele trei argumente:
    1. string MySQL Connect: Va fi în formatul "MySQL: Host \u003d localhost; DBNAME \u003d DB". În exemplul de mai sus, DB funcționează la localhost și ne conectăm la baza de date DB.
    2. Numele MySQL pentru conexiune
    3. Parola de utilizator MySQL.
  • variable $ sql - Creați o interogare SQL pe care doriți să o efectuați. În acest exemplu, alegem un ID de coloană din tabelul orașului.
  • interogare ($ sql). Aici facem cererea SQL, pe care tocmai am creat-o.
  • pentru fiecare. Aici scoatem rezultatul din comanda de interogare de mai sus și salvează-o în variabila de $ rând și apoi o ieșire folosind eco.
  • În MySQL DOP pentru a închide conexiunea, stabiliți pur și simplu variabila $ Conn la NULL.
Când apelați scriptul Mysqli.php de mai sus din browserul dvs., veți vedea următoarele linii; Înseamnă că PHP a reușit să se conecteze la baza de date MySQL și să obțină informații:

Conectat la baza de date. ID ID: 1 2 3 4 5 6 3. Conectați-vă de la utilizarea PHP C a funcțiilor învechite MySQL

Utilizați această metodă numai dacă utilizați versiunea mai veche a PHP și din anumite motive pe care o puteți actualiza la noua versiune. Se recomandă utilizarea metodei nr. 2 și a metodei nr. 3, prezentată mai sus, în locul acestei metode. Am activat această metodă numai pentru referință și nu ca o recomandare pentru utilizare.

Această prelungire specifică a fost depășită de la PHP 5.5. Dar, începând cu versiunea PHP 7.0, nu va funcționa nici măcar deoarece a fost eliminată. Începând cu PHP 5.5, când utilizați aceste funcții, acesta va genera o eroare E_Deprecată.

Creați mysql.php:

"$ rezultat \u003d mysql_query (" selectați ID de la Goroda "); $ rând \u003d mysql_fetch_row ($ rezultat); Echo" Id 1: ", $ rând"
\\ n "; mysql_close ($ conn);?\u003e în cele de mai sus:

  • Funcția MySQL_CONNECT are trei argumente:
    1. numele gazdei în care se execută baza de date MySQL;
    2. numele de utilizator MySQL pentru conectare;
    3. parola pentru utilizatorul MySQL. Aici se conectează la baza de date MySQL, care este efectuată pe serverul local utilizând numele de utilizator și parola.
  • Funcția mysql_select_db. După cum urmează numele, selectează baza de date la care doriți să vă conectați. Echivalentă cu comanda "Utilizare". În acest exemplu, ne conectăm la baza de date DB.
  • Funcția MySQL_QUERY este utilizată pentru a specifica interogarea MySQL. În acest exemplu, alegem un ID de coloană din baza de date a orașelor.
  • mysql_fetch_row. Utilizați această caracteristică pentru a extrage rândurile de la interogarea SQL pe care tocmai am creat-o.
  • În cele din urmă, închideți conexiunea utilizând comanda mysql_close, după cum se arată mai sus.
Când apelați MySQL-Legacy.Php din browserul dvs., veți vedea următoarea ieșire care indică faptul că PHP a putut să se conecteze la baza de date MySQL și să primească informații:

Conectat la baza de date. ID 1: 1 Acest mod poate fi conectat la MySQL. Repet, este mai bine să utilizați primele două căi; despre

În acest articol, vom lua în considerare modalități de a accesa tabelele de bază acest MySQL utilizând limba de interogare SQL. SQL este o abreviere care este atât de "dezvăluită" - o limbă de interogare structurată.
În limba PHP, există o serie de funcții cu prefixul "MySQL". Nu vom avea nevoie de prea multe dintre ele pentru a lua în considerare cererile. Funcția, fără de care în limba PHP, execuția interogărilor SQL ar fi pur și simplu imposibilă:

Resurse mysql_query.

Această caracteristică trimite o cerere de bază de date și returnează identificatorul de resurse dacă circulația reușită.
Pentru a vă conecta la baza de date MySQL, trebuie să efectuați următoarea secvență:

$ Gazdă \u003d "localhost"; // Numele gazdei (specificat de furnizor) $ Baza de date \u003d "db_name"; // Numele bazei de date pe care trebuie să le creați $ utilizator \u003d "user_name"; // numele de utilizator pe care l-ați specificat sau un furnizor de $ pswd \u003d "dvs._pass" definit de dvs.; // parola pe care ați specificat-o $ dbh \u003d mysql_connect ($ gazdă, $ utilizator, $ pswd) sau mori ("Nu mă pot conecta la MySQL"); MySQL_SELECT_DB ($ Baza de date) sau Die ("Nu mă pot conecta la baza de date");

asa de mysql_connect ()- Funcția pentru conectarea la serverul MySQL pe găzduirea dvs.
DAR mysql_select_db () Selectează baza de date de pe serverul de conexiuni.
Cu alte cuvinte, vă conectați la server, selectați baza de date și începeți să lucrați.
Funcția Die () se numește dacă o eroare afișează mesajul pe care l-ați specificat în fereastra browserului.
Funcția este utilizată pentru a finaliza cu baze de date:

Mysql_close ($ dbh);

Aici $ dbh. - descriptor, care la conectat a revenit o funcție mysql_connect..
După ce ați terminat revizuirea de început, să începem să luăm în considerare interogarea SQL în sine.
Pentru a face acest lucru, în primul rând, trebuie să creați o bază de date cu un nume specific. Și în ea, creați o masă, de asemenea cu un nume specific. În exemplele noastre vom contacta tabelul my_sql_table.. Pentru a crea acest tabel, hai să ne executăm localhozul nostru în PhpMyadmin.

Creați tabelul `my_sql_table` (int , // Identificator Viitorul înregistrări de tabel" Varchar (50) nu , // câmp de text Varchar `supranay` Varchar (50) Nu Null, // max 50 caractere Long Cheie primară ( `id`) // identificator cheie de identificare);

Deci, tabelul este creat. Vom executa prima solicitare, care va emite imediat sub forma unui cod PHP:

\\ n "; echo" nume: "$ rând [" primul nume "]."
\\ n "; Echo" Prenume: "$ rând [" nume "]."


\\ n ";)?\u003e

Vom analiza codul fișierului PHP primul ql.php.. Să începem cu interogarea reală la tabelele bazei de date (baza de date).

$ Query \u003d "Selectați * de la" my_sql_table` ";

Această solicitare poate fi decriptată: Selectați din tabel my_sql_table. Db toate intrările din toate domeniile. Astfel, semnul * După selectarea cuvântului înseamnă "alegeți absolut totul". Astfel încât cererea este formată. Acum trebuie executat:

$ res \u003d mysql_query ($ interogare);

În cazul executării cu succes a funcției de interogare mysql_query () Ne returnează un identificator de resurse $ Res..
Ar trebui transferat ca parametru la funcție mysql_fetch_array (). Numele acestei funcții vorbește de la sine. Acestea. Se formează și oferă o matrice prin eșantion din tabelul bazei de date. În cazul tabelului nostru, matricea va consta dintr-o serie de elemente egale cu numărul de înregistrări (șiruri) din tabel și va conține valori iD, nume, prenume Pentru fiecare rând al mesei. Prin urmare, următorul cod:

În timp ce ($ rând \u003d mysql_fetch_array ($ res)) (numărul de echo ":" $ rând ["ID"]. "
\\ n "; echo" nume: "$ rând [" primul nume "]."
\\ n "; Echo" Prenume: "$ rând [" nume "]."


\\ n ";)

puteți să comentați acest lucru: în timp ce variabila $ rând introdusă de noi nu primește rezultate zero operațiuni mysql_fetch_row. Ar trebui să emiteți o valoare a câmpului în browser $ rând ["ID"], $ rând ["Firstname"], $ rând ["prenume"] prin intermediul ecou..
Dacă interogarea este efectuată astfel:

$ Query \u003d "Selectați primul nume de la` my_sql_table";

acest lucru va însemna că numai valorile câmpului de prim nume sunt selectate din toate liniile.
În consecință, codul anterior ar trebui rescris ca:

$ res \u003d mysql_query ($ interogare); În timp ce ($ rând \u003d mysql_fetch_array ($ res)) (Echo "nume:" $ rând ["FirstName"]. "
\\ n ";)

Dacă doriți să selectați o linie de masă cu o valoare specifică iD. Unde este numele de familie (numele de familie) Petrov.Cererea va rescrie după cum urmează:

$ Query \u003d "Selectați ID de la` my_sql_table` în cazul în care numele de familie \u003d" Petrov ";

Dar dacă trebuie să știți numele de familie al celui care este sub numărul, de exemplu, 5, atunci cererea va fi astfel:

$ Query \u003d "Selectați numele de familie de la` my_sql_table` unde id \u003d 5";

În acest caz, știți că rezultatul interogării va fi doar o singură linie de la masă. Acestea. Nu are sens să organizați un ciclu folosind in timp ce. Și procesarea interogării va fi următoarea

$ res \u003d mysql_query ($ interogare); $ rând \u003d mysql_fetch_row ($ res); ECHO "Prenumele celei de-a cincea persoană din listă:" $ ROW. "\\ N";

Aici în loc de mysql_fetch_array () am aplicat mysql_fetch_row (). Acestea. Obțineți valoarea câmpului (sau câmpurile) a unui anumit șir. De când am avut un câmp - prenume - ne putem referi la singurul element al matricei de $ $ rând;.

Deci, luați în considerare cele mai tipice exemple ale interogărilor MySQL. Considerația va dura pe baza tabelului my_sql_table.:
1. Adăugați în câmpul My_SQL_TABLE MIDDLE_NAME (Patronymic) după nume de familie.:

$ Query \u003d "alter tabel` my_sql_table` add`dledle_name`
Varchar (50) nu null după "numele de familie"

2. Acum ștergeți câmpul de familie din tabelul My_SQL_TABLE:

$ Query \u003d "Alter tabel` my_sql_table` picătură` prenume` ";

3. Ștergeți intrările din tabelul My_SQL_TABLE cu numele de familie:

$ Query \u003d "Ștergere de la" my_sql_table "în cazul în care numele de familie \u003d" Sidorov ";

4. În plus față de semnele de egalitate, de asemenea "mai mult" sau "mai puțin", în limba cererilor MySQL există un concept " similar cu"Selectați înregistrările din tabelul My_SQL_TABLE, unde se găsește în numele de familie" dor." :

$ Query \u003d "Selectați * de la" my_sql_table` în cazul în care numele de familie ca "% dor%" ";

Iată prezența " % "La începutul și sfârșitul" Dor "și înseamnă că cererea va căuta exact" DOR ", și nu contează la început, cu întârziere sau la mijlocul ultimului nume se află. Luați în considerare următorul exemplu
5. Selectați înregistrări din tabelul My_SQL_TABLE cu prenumele care pornește P.. Acordați atenție locației " % ":

$ Query \u003d "Selectați * de la` my_sql_table` în cazul în care numele de familie ca" P% "";

6. Calculați valoarea maximă. iD.:

$ Query \u003d "Selectați max (ID) de la" my_sql_table` ";

7. Calculați numărul de câmpuri din My_SQL_TABLE cu prenumele care pornește P..

$ Query \u003d "Selectați numărul (*) de la" my_sql_table "în cazul în care numele de familie ca" P% "";

8. Ștergerea tabelului My_SQL_TABLE:

$ Query \u003d "drop tabel` my_sql_table`";

Pentru întrebările 1-3 în limba PHP, este suficient să executați pur și simplu cererea:

Mysql_query (£ interogarea);

Am analizat cele mai caracteristice exemple de solicitări. Cred, cu ajutorul lor, urmând logica elementară, puteți efectua mai multe solicitări complexe la tabelele de bază de date MySQL pe care le creați.




Există încă întrebări sau ceva incomprehensibil - Bine ați venit la noi