Elementele de bază ale lucrului cu MySQL în PHP. Trimiterea de interogări la baza de date în PHP Conectarea la un server MySQL

Elementele de bază ale lucrului cu MySQL în PHP. Trimiterea de interogări la baza de date în PHP Conectarea la un server MySQL

Îmi amintesc acele vremuri când încă nu știam ce este mysqlși a căutat adesea astfel de articole pe Internet. Dar din anumite motive au fost rareori găsite. Acum am decis să postez unul, astfel încât să existe articole utile despre mysqlȘi php mai este unul. Voi încerca să scriu totul într-o limbă accesibilă.

începerea cu mysql și php

Deci, mai întâi avem nevoie de un server local pentru a putea rula scripturi phpși conectați-vă la baza de date (în continuare o voi numi DB, care înseamnă „bază de date”). Dacă nu aveți încă un server local, ar trebui să citiți mai întâi Instalare și configurare gazdă locală, apoi începeți să studiați baza de date mysqlși DBMS-ul său (instrument de gestionare a bazelor de date).

Dacă aveți deja acest server, atunci faceți asta. În primul rând, vreau să vă prezint SGBD PhpMyAdmin, vă permite să gestionați (adăugați, ștergeți, modificați) înregistrările din baza de date.

Aceasta este pagina principală DBMS PhpMyAdmin. De aici vă puteți crea propria bază de date și puteți stoca în ea înregistrările necesare. Acest lucru este foarte convenabil atunci când creați site-uri web, deoarece informațiile sunt structurate și puteți obține foarte rapid orice înregistrare din baza de date.

După cum am menționat deja, prima parte a articolului, introducerea la mysqlȘi phpmyadmin. Cred că acum înțelegeți ce este mysql și putem începe să studiem funcționalitatea phpmyadmin. Pentru a începe, va trebui să creăm baza de date în sine. Ea va avea propriul ei nume, după care o vom căuta apoi.

Iată structura generală a bazei de date:

Pentru a crea o bază de date, introduceți în câmpul de introducere sub linia „Creați o nouă bază de date” (pe pagina principală a PhpMyAdmin) orice nume (nu chirilic!) pentru viitoarea bază de date. Voi crea o bază de date numită "baza". Acum, urmând diagrama structurii bazei de date, trebuie să facem un tabel. Pentru a face acest lucru, după crearea bazei de date, veți avea următoarea fereastră:

Aici creez un tabel numit utilizatori și 3 câmpuri în el. Apoi, phpmyadmin ne va cere să setăm structura pentru fiecare câmp:

Aici, în coloana „Field” trebuie să indicați numele, în „Type” indicăm tipul de date care vor fi stocate acolo (INT este un număr, VARCHAR este un șir sau text mic(!)). În „Avansat” indicăm câmpului numit „id” parametrul „auto_increament”, ceea ce înseamnă că va crește de fiecare dată când se inserează orice date și îi setăm parametrul „Cheie primară” (puneți un cerc), asta înseamnă că conform primei coloane putem identifica unic câmpul.

„Identificați unic câmpul” înseamnă că, chiar dacă numele și prenumele sunt aceleași, coloana „id” va avea valori diferite (deoarece este incrementată automat cu câte una de fiecare dată).

Acum faceți clic pe „Salvați”. Astfel, am creat tabelul utilizatori, în care putem stoca numele și prenumele (nu este nevoie să inserăm id-ul, mysql va face totul pentru noi), în baza de date utilizatori. Am creat un tabel pentru a stoca înregistrările. Cum să le introduci acolo? Citiți mai jos 😉

Selectați „Inserare” din meniu și scrieți valorile necesare în câmpurile obligatorii. Acum, cum să ștergeți sau să modificați valorile din baza de date mysql cu SGBD-ul PhpMyAdmin... Pentru a șterge, mergeți pur și simplu la meniul „Răsfoiți” și faceți clic pe crucea roșie de lângă intrare:

Și pentru a edita, faceți clic pe creion și înlocuiți câmpurile necesare. Ei bine, acesta este sfârșitul lecției. Acum puteți gestiona baza de date mysql folosind PhpMyAdmin. În lecția următoare, vă voi învăța cum să stocați, să preluaț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 din php

Deci, mai întâi trebuie să învățați cum să vă conectați la o bază de date deja creată. Pentru a face acest lucru, utilizați următorul cod:

În codul de mai sus, m-am conectat la serverul localhost folosind datele de conectare rădăcină care nu necesita o parola (deci nu o specificam). După conectarea la baza de date, putem efectua toate operațiunile pe care le-am efectuat în SGBD-ul phpmyadmin. Adică inserarea, ștergerea, modificarea și preluarea diverselor informații. Acum punct cu punct:

Inserarea înregistrărilor într-o bază de date SQL în php

$query="INSERT INTO `table` (`specificați câmpul`,`specificați câmpul`) VALORI ("orice valoare","orice valoare""); $rezultat=mysql_query($interogare); if($rezultat==true) ( ​​echo „Succes!”; ) else ( echo „Eroare!
„.mysql_error(); )

Adică inserarea este efectuată de funcția INSERT. Dacă totul a mers bine, atunci mysql va returna rezultatul adevărat, sau altfel - false.

Puteți specifica câte câmpuri doriți, principalul lucru este că toate există în baza de date. Adică, de exemplu, există un tabel în care există câmpuri „nume”, „nume” și „oraș”. Pentru a introduce valori în el vom folosi următorul cod:

$query="INSERT INTO `users` (`nume`,`prenume`,`oraș`) VALORI ("Ruslan","Huzin","Kokshetau""); $rezultat=mysql_query($interogare); if($rezultat==true) ( ​​echo „Succes!”; ) else ( echo „Eroare!
„.mysql_error(); )

Ștergerea înregistrărilor din baza de date SQL în php

Ștergerea se efectuează utilizând funcția DELETE. Codul pentru aceasta ar fi cam așa:

$query="ȘTERGERE FROM `utilizatori` WHERE `name`="Ruslan" "; $rezultat=mysql_query($interogare); if($rezultat==true) ( ​​echo „Succes!”; ) else ( echo „Eroare!
„.mysql_error(); )

Adică vom șterge din tabelul utilizatorilor toate rândurile (sau unul) în care coloana nume este egală cu valoarea Ruslan.

Modificarea valorilor în baza de date MySQL în php

De asemenea, putem face modificări la intrările existente în tabel. De exemplu, trebuie să înlocuim valoarea coloanei nume într-un rând în care coloana numelui are valoarea Huzin. Pentru a face acest lucru, rulăm următorul cod:

$query="UPDATE `users` SET `name`="numele meu" WHERE `surname`="Huzin" "; $rezultat=mysql_query($interogare); if($rezultat==true) ( ​​echo „Succes!”; ) else ( echo „Eroare!
„.mysql_error(); )

Obținerea valorilor din baza de date

Acum vine partea distractivă. Din moment ce am notat ceva, ar trebui să-l recuperăm, nu? De exemplu, trebuie să obținem întregul rând din tabelul utilizatori unde coloana nume este egală cu Ruslan. Pentru a face acest lucru, avem nevoie de un cod ușor diferit de cel din primele exemple. Iată-l:

$query="SELECT * FROM WHERE `name`="Ruslan" "; $rezultat=mysql_query($interogare); if($rezultat==true) ( ​​echo „Succes!”; ) else ( echo „Eroare!
".mysql_error(); ) $data=mysql_fetch_array($result); /* Acum variabila stochează date din tabel */

Aici aveam nevoie de încă o funcție pentru a scrie datele selectate într-o variabilă (matrice) în php. Pentru a accesa linia selectată scriem astfel:

$data[„numele coloanei”]

adică pentru a obține numele de familie din linia selectată (unde numele era Ruslan), trebuie să scriem ca rezultat:

echo $date[„nume”];

Și atunci când selectați dintr-un tabel, au scris SELECT * , acest asterisc înseamnă că trebuie să selectați toate coloanele din rând. Dacă avem nevoie, de exemplu, să selectăm doar prenume, scriem SELECT `prenume`. Și pentru a selecta mai multe rânduri din tabel simultan, veți avea nevoie și de o buclă pentru a le afișa. Acesta este cazul dacă, de exemplu, există mai multe rânduri cu coloana Ruslan. Iată codul:

$query="SELECT * FROM WHERE `name`="Ruslan" "; $rezultat=mysql_query($interogare); while($date=mysql_fetch_array($rezultat)) ( echo $data["nume"]."
".$date["nume"]."


"; }

Acum vor fi afișate pe ecran toate rândurile a căror coloană de nume este egală cu valoarea Ruslan.

Acum v-ați familiarizat cu funcțiile de control de bază baza de date mysql direct de la script php.

SGBD MySQL este una dintre numeroasele baze de date suportate în PHP. Sistemul MySQL este distribuit gratuit și are suficientă putere pentru a rezolva probleme reale.

O scurtă introducere în MySQL

SQL este o abreviere a cuvintelor Limbajul de interogare structurat, care înseamnă Structured Query Language. Acest limbaj este un instrument standard pentru accesarea diferitelor baze de date.

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

Pentru a lucra cu baze de date, este convenabil să utilizați instrumentul inclus în kitul pentru dezvoltatori web: Denwer phpMyAdmin. Aici puteți crea o nouă bază de date, creați un nou tabel în baza de date selectată, completați tabelul cu date și adăugați, ștergeți și editați date.

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


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

TipDescriere
NU NULToate rândurile tabelului trebuie să aibă o valoare în acest atribut. Dacă nu este specificat, câmpul poate fi gol (NULL)
INCREMENT AUTOO caracteristică specială MySQL care poate fi utilizată pe coloanele numerice. Dacă lăsați acest câmp necompletat când inserați rânduri într-un tabel, MySQL generează automat o valoare unică de ID. Această valoare va fi cu o mai mare decât valoarea maximă care există deja în coloană. Fiecare tabel nu poate avea mai mult de un astfel de câmp. Coloanele cu AUTO_INCREMENT trebuie indexate
CHEIA PRINCIPALAColoana este cheia primară pentru tabel. Datele din această coloană trebuie să fie unice. MySQL indexează automat această coloană
NESEMNATDupă un tip întreg înseamnă că valoarea sa poate fi fie pozitivă, fie zero
COMETARIUNumele coloanei tabelului

Crearea unei noi baze de date MySQL CREAȚI BAZĂ DE DATE.

CREAȚI BAZĂ DE DATE DACĂ NU EXISTĂ SET DE CARACTERE DEFAULT `base` cp1251 COLLATE cp1251_bin

Crearea unui nou tabel efectuate folosind comanda SQL CREAȚI TABEL. De exemplu, tabelul de cărți pentru o librărie va conține cinci câmpuri: ISBN, autor, titlu, preț și numărul de exemplare:

CREATE TABLE books (ISBN CHAR(13) NOT NULL, PRIMARY KEY (ISBN), autor VARCHAR(30), titlu VARCHAR(60), preț FLOAT(4,2), cantitate TINYINT UNSIGNED); Pentru a evita un mesaj de eroare dacă tabelul există deja, trebuie să modificați prima linie adăugând expresia „DACĂ NU EXISTĂ”: CREATE TABLE IF NOT EXISTS books...

Pentru a crea câmp de actualizare automată cu data curentă de tip TIMESTAMP sau DATETIME, utilizați următoarea construcție:

CREATE TABLE t1 (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP LA UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP LA UPDATE CURRENT_TIMESTAMP);

Plus datele din acest tabel sunt efectuate folosind comanda SQL INTRODUCE. De exemplu:

INSERT INTO carti (ISBN, autor, titlu, pret, cantitate) VALORI ("5-8459-0184-7", "Zandstra Mat", "Master PHP4 pe cont propriu in 24 de ore", "129", "5") ;

Pentru a prelua date dintr-un tabel, utilizați operatorul SELECTAȚI. Preia date din baza de date selectând rânduri care corespund unui anumit criteriu de căutare. Declarația SELECT vine cu un număr destul de mare de opțiuni și cazuri de utilizare.

* indică faptul că toate câmpurile sunt obligatorii. De exemplu:

SELECTAȚI * DIN cărți;

Pentru a accesa doar un anumit câmp, trebuie să specificați numele acestuia în instrucțiunea SELECT. De exemplu:

SELECTAȚI autor, titlu, preț DIN cărți;

Pentru a accesa un subset de rânduri dintr-un tabel, trebuie să specificați un criteriu de selecție care specifică constructul UNDE. De exemplu, pentru a selecta cărți disponibile ieftine despre PHP, trebuie să creați o interogare:

SELECT * FROM books WHERE preț % Se potrivește cu orice număr de caractere, chiar și cele nule
_ Se potrivește exact cu un caracter

Pentru a vă asigura că rândurile preluate de o interogare sunt listate într-o anumită ordine, se utilizează construcția COMANDA PENTRU. De exemplu:

SELECTAȚI * DIN cărți ORDER BY preț;

Mod implicit Ordin triere merge în ordine crescătoare. Puteți inversa ordinea de sortare folosind un cuvânt cheie DESC:

SELECTAȚI * DIN cărți COMANDA PENTRU preț DESC;

Fel Este posibil și pentru mai multe coloane. În loc de numele coloanelor, puteți folosi numerele lor de serie:

SELECTAȚI * DIN cărți COMANDĂ PENTRU 4, 2, 3;

Pentru a modifica valorile înregistrate anterior în tabel, trebuie să utilizați comanda ACTUALIZAȚI. De exemplu, prețul tuturor cărților a fost majorat cu 10%:

UPDATE cărți SET preț = preț * 1,1;

Clauza WHERE va limita operația UPDATE la anumite rânduri. De exemplu:

UPDATE cărți SET preț = preț * 1,05 WHERE preț

Pentru a elimina rânduri din baza de date, utilizați operatorul ȘTERGE. Rândurile care nu sunt necesare sunt specificate folosind clauza WHERE. De exemplu, unele cărți au fost vândute:

DELETE FROM books WHERE cantitate = 0;

Dacă trebuie să ștergeți toate intrările

TRUNCATE TABLE nume_tabel

Pentru a șterge complet un tabel, utilizați:

DROP TABLE nume_tabel

Conectarea PHP cu baza de date MySQL

După ce ați lucrat cu phpMyAdmin pentru a crea baza de date, puteți începe conectarea bazei de date la interfața Web externă.

Pentru a accesa o bază de date de pe Web folosind PHP, trebuie să urmați următorii pași de bază:

  • Conectarea la serverul MySQL.
  • Selectarea unei baze de date.
  • Executarea unei interogări la baza de date:
    • plus;
    • stergere;
    • Schimbare;
    • căutare;
    • triere.
  • Obținerea rezultatului cererii.
  • Deconectați-vă de la baza de date.

Pentru a vă conecta la un server de baze de date în PHP există o funcție mysql_connect(). Argumentele sale sunt numele computerului, numele de utilizator și parola. Aceste argumente pot fi omise. În mod implicit, numele computerului = localhost , apoi numele de utilizator și parola nu sunt necesare. Dacă PHP este folosit în combinație cu serverul Apache, atunci puteți utiliza funcția mysql_pconnect(). În acest caz, conexiunea la server nu dispare după ieșirea programului sau după apelarea funcției mysql_close(). Funcții mysql_connect()Și mysql_pconnect() returnați ID-ul conexiunii dacă totul a avut succes. De exemplu:

$link = mysql_pconnect(); if (!$link) die ("Imposibil de conectat la MySQL");

Odată ce conexiunea la serverul MySQL este stabilită, trebuie să selectați o bază de date. Pentru a face acest lucru, utilizați funcția mysql_select_db(). Argumentul său este numele bazei de date. Funcția returnează true dacă baza de date specificată există și poate fi accesată. De exemplu:

$db = "probă"; mysql_select_db($db) sau die("Nu se poate deschide $db");

Pentru a adăuga, șterge, modifica și selecta date, trebuie să construiți și să executați o interogare SQL. Există o funcție pentru aceasta în PHP mysql_query(). Argumentul său: un șir de interogare. Funcția returnează ID-ul cererii.

Exemplul 1

Adăugarea unei intrări la un tabel

De fiecare dată când se execută Exemplul 1, o înregistrare nouă va fi adăugată la tabelul care conține aceleași date. Desigur, este logic să adăugați date introduse de utilizator în baza de date.

Exemplul 2.1 arată un formular HTML pentru adăugarea de cărți noi la baza de date.

Exemplul 2.1

Formular HTML pentru adăugarea de cărți noi
ISBN
Autor
Nume
Preț
Cantitate

Rezultatele completării acestui formular sunt trimise 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 și să terminați de tastat"); ) $isbn = trim ($_POST["isbn"]); $author = trim ($_POST["author"]); $title = trim ($_POST["title" ] ) ; $isbn = slash ($title = slash) ; sau die („Nu se poate deschide $db”); .floatval($_POST["preț"]).", "".intval($_POST["cantitate"])."")"; $result = mysql_query ($interogare) echo "The cartea a fost adăugată la baza de date."; mysql_close ($link ?>);

În exemplul 2.2, datele șirului introduse sunt procesate de funcție adaugă bare oblice(). Această funcție adaugă bare oblice inverse înainte de ghilimele simple ("), ghilimele duble ("), bară oblică inversă (\) și octeți nuli. Faptul este că, conform cerințelor sistemului de interogare a bazei de date, astfel de simboluri trebuie incluse între ghilimele.

Pentru a determina numărul de înregistrări ca rezultat al unei interogări, utilizați funcția mysql_num_rows().

Toate înregistrările rezultatelor interogării pot fi vizualizate într-o buclă. Înainte de a face acest lucru, utilizați funcția mysql_fetch_ Pentru fiecare înregistrare se obține o matrice asociativă.

Exemplul 3.1 arată un formular HTML pentru căutarea anumitor cărți într-o bază de date.

Exemplul 3.1

Formular de căutare de cărți HTML
Căutare după:

Ce căutăm:

Rezultatele completării acestui formular sunt trimise la search_book.php.

Exemplul 3.2

Vă rugăm să reveniți și să terminați de tastat"); $searchterm = addslashes ($searchterm); $link = mysql_pconnect(); if (!$link) die ("Nu se poate conecta la MySQL"); $db = "eșantion"; mysql_select_db ($db) sau die("Nu se poate deschide $db" $query = "SELECT * FROM books WHERE " .$_POST["searchtype"]." ca "%".$searchterm."%""; $rezultat = mysql_query ($interogare); $n = mysql_num_rows ($rezultat); pentru ($i=0; $i<$n; $i++) { $row = mysql_fetch_array($result); echo "

".($i+1). $row["titlu"]. "



"; ) if ($n == 0) echo "Nu avem nimic de oferit. Ne pare rău"; mysql_close($link); ?>

Opțiune alternativă

Program de căutare de cărți (fișier search_book.php) Vă rugăm să reveniți înapoi și să terminați de tastat"); $searchterm = addslashes ($searchterm); mysql_connect() sau die ("Nu se poate conecta la MySQL"); mysql_select_db ("eșantion") sau die ("Imposibil de deschis baza de date") ; $ rezultat = mysql_query("SELECT * FROM books WHERE ".$_POST["searchtype"].." like "%".$searchterm."%"" while($row = mysql_fetch_array($result) ); ecou"

".($i++) . $row["titlu"]."
"; echo "Autor: ".$row["autor"]."
"; echo "ISBN: ".$row["ISBN"]."
"; echo "Preț: ".$row["preț"]."
"; echo "Cantitate: ".$row["cantitate"]."

"; ) if ($i == 1) echo "Nu avem nimic de oferit. Ne pare rău"; mysql_close(); ?>

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

  1. Browserul Web al utilizatorului emite o solicitare HTTP pentru o anumită pagină Web. De exemplu, un utilizator care utilizează un formular HTML caută toate cărțile despre PHP. Pagina de procesare a formularelor se numește search_book.php.
  2. Serverul web primește o solicitare pentru search_book.php, preia acest fișier și îl transmite motorului PHP pentru procesare.
  3. PHP se conectează la serverul MySQL și trimite cererea.
  4. Serverul acceptă o cerere de bază de date, o procesează și trimite rezultatul (o listă de cărți) înapoi la motorul PHP.
  5. Motorul PHP termină de executat scriptul și formatează rezultatul solicitării în HTML. După aceasta, rezultatul sub formă de HTML este returnat serverului Web.
  6. Serverul Web transmite HTML-ul către browser, iar utilizatorul poate vizualiza lista de cărți solicitată.

Utilizarea mecanismului tranzacției

Folosind mecanismul tranzacției ca exemplu despre cum să transferați bani de la o persoană la alta

If(mysql_query ("BEGIN") && mysql_query ("UPDATE money SET amt = amt - 6 WHERE nume = "Eve") && mysql_query ("UPDATE money SET amt = amt + 6 WHERE nume = "Ida") && mysql_query ("COMMIT"))( echo "Success"; )else( mysql_query ("ROLLBACK"); echo "Nu are succes"; )

SELECTAȚI... PENTRU ACTUALIZARE

Dacă rulați mai multe procese care fac interogări de selectare pe același tabel, acestea pot selecta aceeași înregistrare în același timp.

Pentru a evita situația menționată mai sus, este necesar să executați nu doar o interogare SELECT, ci și versiunea sa extinsă, de care mulți nici măcar nu o cunosc: SELECT ... FOR UPDATE.

Astfel, la executarea acestei interogări, toate înregistrările afectate din baza de date vor fi blocate până la finalizarea sesiunii cu baza de date sau până la actualizarea datelor înregistrării. Un alt script nu va putea selecta înregistrările blocate până când nu apare una dintre condițiile menționate.

Cu toate acestea, nu toate sunt atât de simple. Trebuie să mai îndepliniți câteva condiții. În primul rând, tabelul dvs. trebuie să se bazeze pe arhitectura InnoDB. În caz contrar, blocarea pur și simplu nu va funcționa. În al doilea rând, înainte de a efectua selecția, trebuie să dezactivați confirmarea automată a interogării. Acestea. cu alte cuvinte, executarea automată a cererii. După ce specificați cererea UPDATE, va trebui să accesați din nou baza de date și să efectuați modificările folosind comanda COMMIT:

LUCRU CU O BAZĂ DE DATE MySQL CU INSTRUMENTE PHP

Lectura. Pregătit de Prokhorov V.S.


1. CONECTAREA SCENARILOR PHP cu tabelele MySQL

Să ne uităm la cele mai frecvent utilizate funcții care vă permit să lucrați cu o bază de date MySQL folosind PHP.

Când PHP și MySQL interacționează, programul interacționează cu SGBD printr-un set de funcții.

1.1 Conexiune la server. Funcţiemysql_connect

Înainte de a lucra cu baza de date, trebuie să stabiliți o conexiune la rețea cu aceasta, precum și să autorizați utilizatorul. Funcția mysql_connect() este folosită pentru aceasta.

resursă mysql_connect(]])

Această funcție stabilește o conexiune de rețea la baza de date MySQL situată pe gazda $server (în mod implicit acesta este localhost, adică computerul curent) și returnează identificatorul conexiunii deschise. Toate lucrările ulterioare sunt efectuate cu acest identificator. Toate celelalte funcții care iau acest identificator (mâner) ca argument vor identifica în mod unic baza de date selectată. La înregistrare, specificați numele de utilizator $nume utilizator și parola $parolă (în mod implicit, numele de utilizator de la care rulează procesul curent - la depanarea scripturilor: root și o parolă goală):

$dbpasswd = ""; //Parola

//Afișează un avertisment

ecou("

");

Variabilele $dblocation, $dbuser și $dbpasswd stochează numele serverului, numele de utilizator și parola.

1.2 Deconectare de la server. Funcţiemysql_close

Conexiunea la serverul MySQL se va închide automat când scriptul se finalizează sau când funcția mysql_close este apelată

bool mysql_close()

Această funcție închide conexiunea la serverul MySQL și returnează true dacă operația este reușită și false în caz contrar. Funcția ia ca argument mânerul de conexiune la baza de date returnat de funcția mysql_connect.

$dblocation = "localhost"; //Numele serverului

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

$dbpasswd = ""; //Parola

//Conectează-te la serverul bazei de date

//Suprimați rezultatul de eroare cu simbolul @ înainte de a apela funcția

$dbcnx = @ mysql_connect($dblocation, $dbuser, $dbpasswd);

if (!$dbcnx) //Dacă descriptorul este 0, conexiunea nu este stabilită

//Afișează un avertisment

ecou("

Serverul bazei de date este momentan indisponibil, astfel încât pagina nu poate fi afișată corect.");

if (mysql_close($dbcnx)) //închide conexiunea

echo("Conexiune la baza de date încheiată");

echo("Nu am putut finaliza conexiunea");

1.3 Crearea unei baze de date. Funcția CREATE DATABASE

Comanda - creați o bază de date este disponibilă numai pentru administratorul serverului, iar pe majoritatea site-urilor de găzduire nu poate fi executată:

CREATE DATABASEDatabaseName

Creează o nouă bază de date numită DatabaseName.

Un exemplu de lucru cu această funcție:

@mysql_query("CREATE BAZA DE DATE $dbname");

Este recomandat să folosiți apostrofe („SQL – comandă”) peste tot ca delimitatori pentru liniile care conțin comenzi SQL. Acest lucru asigură că nicio variabilă $ nu este interpolată accidental (adică înlocuită cu valoarea sa) și crește securitatea scriptului.

Comanda de creare a bazei de date CREATE DATABASE este disponibilă doar superutilizatorului, iar pe majoritatea site-urilor de găzduire este imposibil ca un simplu utilizator să o execute. Este disponibil numai pentru administratorul serverului.

Pentru experimente, să creăm o bază de date de teste executând o interogare SQL din linia de comandă. Pentru a face acest lucru, trebuie să vă conectați la MySQL și să introduceți în linia de comandă MySQL:

mysql> crearea bazei de date de testare;

După aceasta, ar trebui să tastați:

mysql>utilizați baza de teste;

Baza de date creată:


1.4 Selectarea unei baze de date. Funcţiemysql_select_db

Înainte de a trimite prima solicitare către serverul MySQL, trebuie să indicăm cu ce bază de date vom lucra. Funcția mysql_select_db este concepută pentru asta:

bool mysql_select_db(șir $nume_base de date [,resursa $identificator_link])

Acesta notifică PHP că operațiunile viitoare pe conexiunea $link_identifier vor folosi baza de date $database_name.

Folosirea acestei funcții este echivalentă cu apelarea comenzii use într-o interogare SQL, adică funcția mysql_select_db selectează o bază de date pentru lucrări ulterioare, iar toate interogările SQL ulterioare sunt aplicate bazei de date selectate. Funcția ia drept argumente numele bazei de date selectate nume_bază de date și resursa descriptor de conexiune. Funcția returnează true dacă operația a avut succes și false în caz contrar:

//Cod de conectare la baza de date

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

//Afișează un avertisment

ecou("

Baza de date este momentan indisponibilă, astfel încât pagina nu poate fi afișată corect.");

1.5 Tratarea erorilor

Dacă apar erori în timpul lucrului cu MySQL (de exemplu, parantezele din interogare nu sunt echilibrate sau nu sunt suficienți parametri), atunci mesajul de eroare și numărul acestuia pot fi obținute folosind cele două funcții descrise mai jos.

Este important să utilizați aceste funcții cu atenție și cu promptitudine, deoarece altfel depanarea scripturilor poate deveni mai dificilă.

● Funcție:

int mysql_errno()

returnează numărul ultimei erori raportate. Identificatorul de conexiune $link_identifier poate fi omis dacă a fost stabilită o singură conexiune în timpul execuției scriptului.

● Funcție:

șir de caractere mysql_error()

returnează nu un număr, ci un șir care conține textul mesajului de eroare. Este convenabil de utilizat în scopuri de depanare. De obicei, mysql_error este folosit împreună cu construcția sau die(), de exemplu:

@mysql_connect ("localhost", "utilizator", "parolă")

sau die("Eroare de conectare la baza de date: ".mysql_error());

Operatorul @, ca de obicei, servește la suprimarea avertismentului standard care ar putea apărea în cazul unei erori.

În versiunile recente de PHP, avertismentele din funcțiile MySQL nu sunt înregistrate în mod implicit.

1.6 Automatizarea conexiunii la MySQL. Fișier (config.php)

De obicei, există mai multe scripturi pe un site care necesită acces la aceeași bază de date.

Se recomandă să separați codul responsabil pentru conectarea la MySQL într-un fișier separat și apoi să îl conectați la scripturile necesare folosind funcția include.

Este logic să plasați funcțiile de conectare, selectare și creare a unei baze de date în același fișier (config.php) unde sunt declarate variabilele cu numele de server $dblocation, username $dbuser, parola $dbpasswd și numele bazei de date $dbname:

lista config.php:

//config.php codul fișierului care conține parametrii pentru conectarea la server și selectarea unei baze de date

//trimite mesaje de eroare de conexiune către browser

$dblocation = "localhost"; //Numele serverului

$dbname = "inserați numele bazei de date" //Numele bazei de date: în curs de creare sau existentă

$dbuser = "rădăcină"; //Numele de utilizator al bazei de date

$dbpasswd = ""; //Parola

//Conectează-te la serverul bazei de date

//Suprimați rezultatul de eroare cu simbolul @ înainte de a apela funcția

$dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd);

if (!$dbcnx) //Dacă descriptorul este 0, conexiunea la serverul bazei de date nu este stabilită

//Afișează un avertisment

ecou("

Serverul bazei de date este momentan indisponibil, astfel încât pagina nu poate fi afișată corect.

");

//Creează baza de date $dbname - doar un superutilizator poate face acest lucru

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

@mysql_query("CREAȚI BAZĂ DE DATE dacă nu există $dbname’);

//Cod de conectare la baza de date: facem o selecție neechivocă a unei baze de date nou create sau a unei baze de date existente

//Suprimați rezultatul de eroare cu simbolul @ înainte de a apela funcția

if(!@mysql_select_db($dbname, $dbcnx)) //Dacă descriptorul este 0, conexiunea la baza de date nu este stabilită

//Afișează un avertisment

ecou("

Baza de date este momentan indisponibilă, astfel încât pagina nu poate fi afișată corect.

");

//Funcție de ajutor mică care imprimă un mesaj

//Mesaj de eroare în cazul unei erori la interogarea bazei de date

funcția puterror($mesaj)

ecou("");


2. EXECUTAREA ÎNTREBĂRILOR BAZEI DE DATE

2.1 Crearea unui tabel. FuncţieCREAȚI TABEL:

CREATE TABLE TableName (tip FieldName, tip FieldName,)

Această comandă creează un nou tabel în baza de date cu coloane (câmpuri) definite prin numele lor (FieldName) și tipurile specificate. După crearea tabelului, puteți adăuga înregistrări la acesta constând din câmpurile enumerate în această comandă.

Listarea test_11.php. Un program care creează un tabel nou într-o bază de date:

includeți „config.php”;//Conectați-vă la server și selectați o bază de date

mysql_query("CREATE TABLE dacă nu există oameni

id INT AUTO_INCREMENT PRIMARY KEY,

sau die("Eroare MySQL: ".mysql_error());


Acest script creează un nou tabel de oameni cu două câmpuri. Primul câmp are tipul INT (întreg) și numele id. Al doilea este tipul TEXT (șir de text) și numele numelui.

Dacă tabelul există, construcția sau die() va funcționa.

Clauza opțională if not exists, atunci când este specificată, spune serverului MySQL că nu ar trebui să genereze un mesaj de eroare dacă un tabel cu numele specificat există deja în baza de date.

Pentru a profita la maximum de baza de date MySQL, este important să înțelegeți cum să vă conectați de la un program PHP personalizat la o bază de date MySQL.

Acest tutorial descrie următoarele trei metode împreună cu un exemplu de program PHP corespunzător care va explica cum să vă conectați folosind PHP la o bază de date.

  • Conectați-vă folosind extensia Mysqli (recomandat)
  • Conectați-vă folosind PDO (recomandat)
  • Conectarea utilizând funcții tradiționale mysql_ (învechite)

Pentru a face acest lucru, trebuie să instalați pachetul PHP-MySQL.

Pe baza distribuției RedHat, inclusiv , utilizați yum pentru a instala PHP-MySQL, așa cum se arată mai jos.

Yum, instalează php-mysql

În funcție de sistemul dvs., vom instala sau actualiza următoarele dependențe de mai sus:

  • php-cli
  • php-comun
  • php-pdo
  • php-pgsql

Odată ce totul este instalat, pagina phpinfo va afișa modulul MySQL așa cum se arată mai jos:

Pentru toate exemplele de mai jos, ne vom conecta la o bază de date MySQL care există deja. Dacă sunteți nou în MySQL, acesta este un loc bun pentru a începe: .

Notă: Tot ceea ce este descris aici va funcționa și cu MariaDB, la fel cum funcționează cu MySQL.

1. Conexiune în PHP folosind extensia Mysqli

MySQLi înseamnă MySQL Îmbunătățit.

Vă rugăm să rețineți că la majoritatea distribuțiilor (de exemplu: CentOS), PHP-MySQLi este deja parte a pachetului PHP-MySQL. În acest fel, nu trebuie să căutați și să instalați pachetul PHP-MySQLi. Tot ce trebuie să faceți este să instalați pachetul PHP-MySQL pentru a obține o extensie Mysqli funcțională pe sistemul dumneavoastră.

Creați următorul fișier mysqli.php în DocumentRoot în Apache:

connect_error) ( die("Eroare: Nu se poate conecta: " . $conn->connect_error); ) echo "Se conectează la baza de date.
"; $rezultat = $conn->query("SELECT numele de la angajat"); echo "Număr de rânduri: $rezult->num_rows"; $result->close(); $conn->close(); ?>

În cele de mai sus:

  • MySQLi – Această funcție va iniția o nouă conexiune folosind extensia Mysqli. Această funcție va lua patru argumente:
    1. Nume gazdă în care rulează baza de date MySQL
    2. Nume de utilizator pentru conexiunea MySQL
    3. Parola utilizator Mysql
    4. Baza de date MySQL la care să vă conectați.
  • Funcția de interogare – Utilizați aceasta pentru a specifica interogarea dvs. MySQL. În acest exemplu, selectăm coloana de nume din baza de date a angajaților.
  • În cele din urmă, afișăm numărul de rânduri selectate folosind variabila num_rows. Închidem și conexiunea așa cum se arată mai sus.

Conectați-vă la baza de date. Numar de linii: 4

Notă: Dacă încercați să vă conectați la o bază de date MySQL la distanță, puteți face acest lucru pentru a evita eroarea de refuzare a conexiunii gazdă: Cum să permiteți unui client MySQL să se conecteze la un server MySQL la distanță.

2. Conectarea folosind PHP la MySQL cu extensia PDO

PDO înseamnă PHP Data Objects.

PDO_MYSQL implementează interfața PDO oferită de PHP pentru conectarea unui program la o bază de date MySQL.

Pe majoritatea distribuțiilor Linux (cum ar fi CentOS și RedHat), pachetul PHP-PDO este deja inclus în pachetul PHP-MySQL. În acest fel, nu trebuie să căutați și să instalați pachetul PHP-PDO. Tot ce trebuie să faceți este să instalați pachetul PHP-MySQL pentru a obține o extensie PHP PDO_MYSQL funcțională pe sistemul dumneavoastră.

Creați următorul fișier MySQL-pdo.php în Apache DocumentRoot:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo „Conectarea la baza de date.
"; $sql = "SELECTARE numele de la angajat"; printează "Numele angajatului:
"; foreach ($conn->query($sql) ca $row) (printează $row["nume"] . "
"; ) $conn = null; ) catch(PDOException $err) ( echo "Eroare: Nu se poate conecta: " . $err->getMessage(); ) ?>

În cele de mai sus:

  • PDO nou – Va crea un nou obiect PDO care va lua următoarele trei argumente:
    1. Șir de conexiune MySQL: va fi în formatul „mysql:host=$hostname;dbname=$dbname”. În exemplul de mai sus, baza de date rulează pe localhost și ne conectăm la baza de date andreyex.
    2. Nume de utilizator pentru a vă conecta la MySQL.
    3. Parola pentru utilizatorul mysql.
  • Variabila $sql - Creează interogarea SQL pe care doriți să o rulați. În acest exemplu, selectăm coloana de nume din tabelul de angajați.
  • query($sql) – aici executăm interogarea SQL pe care tocmai am creat-o.
  • foreach – Aici rulăm comenzile de mai sus și le stocăm în variabila $string și apoi le arătăm folosind comanda print.
  • În MySQL PDO, pentru a închide o conexiune, pur și simplu resetați variabila $conn la zero.

Când apelați mysqli.php din browser, veți vedea următoarea ieșire, care indică faptul că PHP a putut să se conecteze la baza de date MySQL și să preia datele.

Conectați-vă la baza de date. Nume angajat: siteslan Maria Oleg

3. Conexiune în PHP folosind funcții mysql_ (învechit)

Utilizați această metodă numai dacă utilizați o versiune mai veche de PHP și nu puteți face upgrade la noua versiune dintr-un motiv oarecare.

Aceasta este o extensie PHP 5.5 moștenită. Dar pornind de la versiunea PHP 7.0, acest lucru nu va funcționa din moment ce a fost eliminat.

Începând cu PHP 5.5, atunci când utilizați aceste funcții, acestea vor genera o eroare E_DEPRECATED.

Creați următorul fișier MySQL-legacy.php sub Apache DocumentRoot:

"; $rezultat = mysql_query("SELECT numele de la angajat"); $row = mysql_fetch_row($rezultat); echo "Angajat 1:", $row, "
\n"; mysql_close($conn); ?>

În cele de mai sus:

  • Funcția mysql_connect are trei argumente: 1) numele de gazdă în care rulează baza de date MySQL, 2) numele de utilizator pentru conectarea la MySQL, 3) parola pentru utilizatorul MySQL. Aici ne conectăm la baza de date MySQL, care rulează pe serverul local, folosind numele de utilizator root și parola acestuia.
  • Funcția mysql_select_db – După cum sugerează și numele, va selecta baza de date la care doriți să vă conectați. Aceasta este echivalentă cu comanda „utilizare”. În acest exemplu, ne conectăm la baza de date andreyex.
  • Funcția mysql_query – Utilizați aceasta pentru a specifica interogarea dvs. MySQL. În acest exemplu, selectăm coloana de nume din baza de date a angajaților.
  • mysql_fetch_row - Utilizați această funcție pentru a prelua rânduri din interogarea SQL pe care tocmai am creat-o.
  • În cele din urmă, închideți conexiunea folosind comanda mysql_close așa cum se arată mai sus.

Când apelați MySQL-legacy.php din browser, veți vedea următoarea ieșire, care indică faptul că PHP a putut să se conecteze la baza de date MySQL și să preia datele.

Conectați-vă la baza de date. Angajat 1: AndreyEx

Folosind php...

Crearea unei conexiuni în moduri diferite:

1) modul de modă veche de a vă conecta la MySQL:

$conn=mysql_connect($db_hostname, $db_username, $db_password) sau die ("Fără conexiune la server");
mysql_select_db($db_database,$conn) sau die ("Nu, nu a fost posibilă conectarea la baza de date");

Explicații ale variabilelor de mai jos.

Sunt utilizate următoarele funcții:

  • mysql_connect()- sa se conecteze la server;
  • mysql_select_db()- să se conecteze la baza de date;

În același timp, verificăm în mod constant erorile în acest fel: sau murim („Eroarea este așa și cutare”); - tradus ca sau mor cu o astfel de eroare - pentru a afla imediat unde este eroarea.

config.php

// variabile pentru conectarea la baza de date
$host = "localhost"; /gazdă
$nume utilizator = „rădăcină”; // parola pentru conectarea la baza de date
$parolă = ""; // parola pentru conectarea la baza de date - pe computerul local poate fi goala.
$database_name = "my-dolgi"; // numele bazei de date

// mod vechi de conectare la baza de date
mysql_connect($gazdă, $nume utilizator, $parolă) sau die("Nu se poate conecta crea conexiune");

// selectează baza de date. Dacă există o eroare, ieșire
mysql_select_db($database_name) sau die(mysql_error());

index.php

require_once "config.php";


$rezultat = mysql_query("SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5") sau die(mysql_error());



";


while ($rând = mysql_fetch_assoc($rezultat)) (
";
}


mysql_free_result($rezultat);

// Închideți conexiunea
mysql_close();

2) Un stil procedural mai progresiv - conectarea la baza de date folosind mysqli:

Aceasta metoda:

  1. convenabil;
  2. de până la 40 de ori mai rapid;
  3. securitate sporită;
  4. există caracteristici și funcții noi;

Un exemplu de conectare la o bază de date în PHP cu o selecție dintr-un tabel

config.php

// conexiuni la baza de date
$link = mysqli_connect("localhost", "nume utilizator", "parolă", "name-database"); // aici introducem datele dvs. direct: nume de utilizator, parola și numele bazei de date, primul câmp este de obicei localhost

// eroare de conectare la ieșire
dacă (!$link) (
echo "Eroare de conectare la baza de date. Cod de eroare: " . mysqli_connect_error();
Ieșire;
}

Vă rugăm să rețineți - mysqli este folosit peste tot, nu mysql!!!

index.php

require_once "config.php";

// Execută cererea. Dacă există o eroare, o afișăm
dacă ($rezultat = mysqli_query($link,„SELECT Name, Money FROM Debt ORDER BY Money DESC LIMIT 5”)) (

Echo „Cui îi datorez în ordine descrescătoare:

";

// Preluarea rezultatelor interogării
în timp ce ($rând = mysqli_fetch_assoc($rezultat)) (
echo $row[„Nume”] . „cu datorii”. $row[„Bani”] . "ruble.
";
}

// eliberând memoria folosită
mysqli_free_result($rezultat);

// Închideți conexiunea
mysqli_close($link);
}

După cum puteți vedea, unele puncte s-au schimbat (în cursive).

3) Metodă orientată pe obiecte de conectare la o bază de date MySQL - folosind metode și clase:

Contra: Mai complex și mai puțin susceptibil la erori.

Pro: concizie și comoditate pentru programatorii experimentați.

$conn = new mysqli($db_hostname, $db_username, $db_parola, $db_database);
if($conn->connect_errno)(
die($conn->connect_error);
) else (echo „Conexiunea la baza de date a fost stabilită cu succes”;)

aici, în principiu, totul este intuitiv:

  • $db_hostname este gazdă(mai ales localhost),
  • $db_database - nume db;
  • $db_username și $db_password - numele de utilizator și respectiv parola!

Un exemplu de conectare la o bază de date în stil php OOP cu eșantionare dintr-un tabel

config.php

// conexiuni la baza de date
$mysqli = mysqli nou("localhost", "nume utilizator", "parolă", "nume-bază de date"); // aici introducem datele dvs. direct: nume de utilizator, parola și numele bazei de date, primul câmp este de obicei localhost

// eroare de conectare la ieșire
if ($mysqli->connect_error) (
die ("Eroare de conectare DB: (" . $mysqli->connect_errno . ") " . mysqli_connect_error) ;
}

Vă rugăm să rețineți - mysqli este folosit peste tot, nu mysql!!! și spre deosebire de metoda anterioară, apar săgeți „->”, care indică faptul că acesta este un stil OOP.

index.php

require_once "config.php";

// Execută cererea. Dacă există o eroare, o afișăm
dacă ($rezultat = $ mysqli->interogare("SELECT Name, Money FROM Debt ORDER BY Money DESC LIMIT 5")) (

Echo „Cui îi datorez în ordine descrescătoare:

";

// Preluarea rezultatelor interogării
în timp ce ($rând = $rezultat-> fetch_assoc()) {
echo $row[„Nume”] . „cu datorii”. $row[„Bani”] . "ruble.
";
}

// eliberând memoria folosită
$rezultat->close();

// Închideți conexiunea
$mysqli->close();
}

Sarcina ta este să găsești diferențele.

4) Comunicarea cu baza de date folosind PDO:

La conectarea la o bază de date MySQL, se folosesc expresii pregătite (folosind metoda prepare) și, ca urmare, o securitate mai mare și crește foarte mult performanța.

fișier de configurare din metoda anterioară! - la fel

index.php

// Stil PDO pentru comunicarea cu MySQL
if ($stmt = $mysqli->prepare("SELECT Name, Voney FROM Dolg ORDER BY Money< ? LIMIT 5")) {

$stmt->bind_param("i", $summa);
$summa = 100000;

//începe execuția
$stmt->execute();

// Declararea variabilelor pentru valorile pregătite
$stmt->bind_result($col1, $col2);

Echo „Cui îi datorez în ordine descrescătoare:

";

// Preluarea rezultatelor interogării
while ($stmt->fetch()) (
echo $col1 . „cu datorii”. $col2 . "ruble.
";
}

// eliberând memoria folosită
$stmt->close();

// Închideți conexiunea
$mysqli->close();

După cum puteți vedea, acest lucru este mult mai complicat și trebuie să studiați DOP - acesta este un subiect separat.

vederi