online: 4; azi: 995; total: 53001 Webdesign - Phpmysql - 65

Utilizarea bazelor de date folosind PHP

  • Conectare la serverul MySQL folosind functiile PHP
  • Detectare erori aparute in lucrul cu bazele de date
  • Creare baze de date si tabele folosind functii PHP
  • Adaugare date in tebel folosind PHP

Faptul ca limbajul PHP a devenit atat de popular se datoreaza in mare masura faptului ca acesta contine suport de functii pentru lucrul cu bazele de date.

1. Conectarea la serverul MySQL

Pentru a utiliza o baza de date MySQL, avem nevoie de o conexiune la serverul de baze de date. Aceasta conexiune va fi utilizata ca punct de access pentru comenzi mysql.
Pentru a va conecta la un server MySQL, utilizati functia mysql_connect(), a carei sintaxa este urmatoarea:
                mysql_connect(nume_gazda, nume_utilizator, parola)
Unde "nume_gazda" este numele gazdei, serverul pe care ruleaza serviciul MySQL, "nume_utilizator" este numele utilizatorului care se conecteaza la serverul MySQL, iar "parola" este parola MySQL asociata utilizatorului.
In cazul in care serverul MySQL ruleaza pe calculatorul dv. personal, parametrul "nume gazda" este in general "localhost". In alte cazuri, daca serverul MySQL ruleaza pe un alt computer, va trebui sa specificati adresa computerului pe care ruleaza serverul MySQL.
Functia returneaza FALSE în caz de esec; în caz contrar, returneaza o valoare denumita identificator de legatura, care serveste ca instrument de manipulare pentru accesul la serverul MySQL.
Iata un exemplu de utilizare a functiei mysql_connect():

<?php
$conn = mysql_connect( "localhost", "Marius", "mypass")
    or die("Unable to connect to MySQL");
print "Connected to MySQL <br />";
?>
In acest exemplu, serverul MySQL ruleaza pe "localhost" ca si modulul PHP, utilizatorul este "Marius" iar parola "mypass".
Dupa executia acestui script, daca nu se reuseste conectarea la MySQL, va aparea mesajul "Unable to connect to MySQL", in caz de reusita, apare mesajul "Connected to MySQL"

În mod prestabilit, functia mysql_connect() se conecteaza la serviciul MySQL prin intermediul portului 3306, portul MySQL standard. Daca doriti sa obtineti accesul la un server MySQL care ruleaza pe un port non-standard, puteti atasa un caracter doua puncte si numarul portului dorit la argumentul care contine numele gazdei; de exemplu, "localhost:3308".

2. Incheierea conexiunii la serverul MySQL

Pentru terminara unei conexiuni la serverul MySQL se foloseste instructiunea: mysql_close();. Aceasta functie inchide conexiunea curenta. Functia returneaza TRUE în caz de reusita; în caz contrar, returneaza FALSE.
În general, nu este necesara invocarea functiei mysql_close(), deoarece PHP închide automat conexiunile deschise cu bazele de date atunci când un script îsi încheie executia.
Iata un exemplu de conectare la serverul MySQL si inchidere a conexiunii folosind functia mysql_close():

<?php
$conn = mysql_connect( "localhost", "Marius", "mypass")
    or die("Unable to connect to MySQL");
// Aici adaugati datele necesare lucrului cu serverul MySQL

mysql_close();
?>

3. Detectarea aparitiei erorilor

Biblioteca MySQL din PHP furnizeaza doua functii de verificare a erorilor, si anume mysql_errno() si mysql_error().
Fiecare functie returneaza un rezultat care reflecta eroarea, daca aceasts exista.
Nici una din cele doua functii nu necesita argumente. Functia mysql_errno() returneaza un cod numeric de eroare, în timp ce functia mysql_error() returneaza un sir care descrie eroarea. Daca nu s-a produs nici o eroare, codul numeric al erorii este zero si descrierea are ca valoare un sir vid.
Informatiile de eroare sunt disponibile numai daca este activa o conexiune cu serverul MySQL. Prin urmare, intai trebuie sa se reuseasca conectarea la MySQL.
Iata cum puteti folosi functiile respective pentru a verifica modul de operare a functiei mysql_select_db() (aceasta selecteaza baza de date pentru lucru):

<?php
$conn = mysql_connect( "localhost", "Marius", "mypass")
    or die("Unable to connect to MySQL");

print "Connected to MySQL<br />";

mysql_select_db("lucrudb");
if (mysql_error()) {
    echo "<br />". mysql_errno(). " : ". mysql_error();
}
?>
Daca se reuseste conexiunea la serverul MySQL si baza de date cu numele "lucrudb" este inexistenta, rezultatul afisat de exemplul de mai sus va fi urmatorul:
Connected to MySQL
1049 : Unknown database 'lucrudb'

4. Eliminarea mesajelor de eroare si a avertismentelor nedorite

Numeroase functii PHP pot produce erori sau mesaje de avertizare care îi pot deruta pe utilizatorii siturilor Web sau le pot cauza neplaceri.
PHP furnizeaza functia error_reporting(), care va permite sa eliminari mesajele nedorite. Functia are urmatoarea forma:
                error_reporting(mask)
unde "mask" specifica tipul mesajelor care vor fi raportate. Daca specificati zero ca valoare a atributului "mask" (error_reporting(0)), nu va fi raportat nici un mesaj. Daca specificati "E_ALL" in loc de "mask" (error_reporting(E_ALL)), vor fi raportate toate mesajele.
Sau, o alta metoda pentru oprirea mesajelor de eroare, explicata in lectiile anterioare, este adaugand @ inaintea functiei.

4. Crearea si selectarea unei baze de date.

O functie importanta in lucrul cu bazele de date este mysql_query(), care are urmatoarea forma:
                mysql_query("interogare")
                                sau
                mysql_query("interogare", "id_con")
- "interogare" este un sir ce contine comenzile SQL care urmeaza a fi executate (in PHP, comenzile SQL nu trebuie sa se încheie cu un caracter punct si virgula).
- "id_con" este identificatorul de conectare returnat de functia mysql_connect(), daca acesta este omis se foloseste ultima legatura deschisa cu aceasta functie.
Functia mysql_query() returneaza TRUE daca serverul a reusit sa execute interogarea; în caz contrar, returneaza FALSE.
- Important: pentru ca sa puteti lucra cu baze de date in PHP trebuie sa cunoasteti comenzile SQL necesare. Cele mai importante au fost prezentate in lectiile 22, 23 si 24

Pentru a crea o noua baza de date folosim comanda SQL "CREATE DATABASE numeBazaDeDate;", pe care o putem lansa de la o consola MySQL, sau o putem apela de la un script PHP prin intermediul functiei mysql_query(). Iata un exemplu prin care creem baza de date "lucrudb":

<?php
$conn = mysql_connect( "localhost", "Marius", "mypass")
    or die("Unable to connect to MySQL");
$createdb = mysql_query("CREATE DATABASE lucrudb");
if ($createdb)
    echo "Baza de date lucrudb a fost creata <br />";
else
    echo "<br />". mysql_errno(). " : ". mysql_error();
mysql_close();
?>
- Dupa executarea acestui script, daca totul este corect, va fi creata baza de date "lucrudb" si va fi afisat mesajul "Baza de date lucrudb a fost creata".
Dupa ce programul a obtinut o conexiune cu serverul MySQL, inainte de a lucra cu tabelele dintr-o baza de date MySQL, programul trebuie sa selecteze baza de date respectiva. Pentru aceasta, folositi functia mysql_select_db(), care are urmatoarea forma:
  • mysql_select_db(baza_de_date)
Unde "baza_de_date" este numele bazei de date la care urmeaza a se obtine acces.
Functia returneaza TRUE daca poate obtine accesul la baza de date, respectiv FALSE în caz contrar.
Iata un exemplu de selectare a bazei de date "lucrudb":
<?php
$conn = mysql_connect( "localhost", "Marius", "mypass")
    or die("Unable to connect to MySQL");
$selectdb = mysql_select_db('lucrudb');
if ($selectdb)
    echo "Baza de date lucrudb a fost selectata <br />";
else
    echo "<br />". mysql_errno(). " : ". mysql_error();
mysql_close();
?>

5. Crearea tabelelor

Dupa conectare si selectarea bazei de date putem crea tabele in cadrul bazei de date selectate. Pentru aceasta folosim limbajul SQL CREATE TABLE numeTabel (coloana1, coloana2, ...); impreuna cu functia mysql_query().
In exemplul urmator cream tabelul cu numele "carti" care contine urmatoarele campuri:

Nume camp Tip
  id   Identificator unic, Not Null, cheie primara
  nume   Char(30)
  autor   Char(25)
  gen   Char(10)
  data_intrare   Date
  pret   Decimal(12,2)
In stanga, la "Nume Camp", sunt trecute coloanele tabelului, iar in dreapta tipul acestora, coloana cu nume "id" fiind cheia primara.
De asemenea, folosim indicatorul "AUTO_INCREMENT" pentru a preciza faptul ca MySQL va repartiza o valoare secventiala unica în coloana care serveste drept cheie primara a tabelului.
Iata si scriptul PHP pentru creacrea tabelului:
<?php
$conn = mysql_connect("localhost", "Marius", "mypass")
    or die("Unable to connect to MySQL");
$selectdb = mysql_select_db('lucrudb');
if (!$selectdb)
    echo "Baza de date lucrudb nu a putut fi selectata deoarece : ". mysql_errno(). " : ". mysql_error();
$sql = "CREATE TABLE `carti` (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nume varchar(30) NOT NULL, autor varchar(25) , gen varchar(10) NOT NULL, data_intrare date, pret decimal(12,2))";
if (mysql_query($sql, $conn))
    echo "Tabelul carti a fost creat <br />";
else
    echo "Tabelul carti nu a putut fi creat deoarece : ". mysql_errno(). " : ". mysql_error();
mysql_close();
?>
In exemplul de mai sus, variabila "$sql" contine comanda SQL pentru crearea acestui tabel.
Instructiunea mysql_query($sql, $conn), executa aceasta comanda si in cazul in care rezultatul este TRUE se trimite la iesire sirul: "Tabelul carti a fost creat". In cazul in care instructiunea SQL nu a putut fi executata, functia mysql_query($sql) intoarce valoarea FALSE, afisand eroarea din cauza careia tabelul nu a putut fi creat.

6. Adaugarea de date in tabel

Dupa ce aveti tabelul creat in baza de date MySQL puteti adauga date in el, pentru aceasta se foloseste functia mysql_query("interogare") unde "interogare" este urmatoarea comanda:
                INSERT INTO `nume_tabel` (coloana1, coloana2, ...) VALUES ('date1', 'date2', ...)
- unde `nume_tabel` este numele tabelului in care se adauga datele
- "coloana1, coloana2, ..." sunt numele coloanelor in care se doreste adaugarea datelor
- "date1, date2, ..." sunt datele care vor fi adaugate, tinandu-se cont de ordinea si numarul lor cu cea a coloanelor
Iata un exemplu, in care se foloseste tabelul "carti" creat mai sus

<?php
$conn = mysql_connect("localhost", "Marius", "mypass")
    or die("Unable to connect to MySQL");
$selectdb = mysql_select_db('lucrudb');
if (!$selectdb)
    echo "Baza de date lucrudb nu a putut fi selectata deoarece : ". mysql_errno(). " : ". mysql_error();

$sql = "INSERT INTO `carti` (nume, autor, gen, data_intrare, pret) VALUES ('Glossa', 'Mihai Eminescu', 'poezie', '19-05-2009', '8')";
if (mysql_query($sql, $conn))
    echo 'Datele au fost adaugate';
else
    echo "Datele nu au fost adaugate deoarece : ". mysql_errno(). " : ". mysql_error();
mysql_close();
?>
- In acest exemplu, datele "'Glossa', 'Mihai Eminescu', 'poezie', '19-05-2009', '8'" vor fi adaugate in coloanele "nume, autor, gen, data_intrare, pret" in aceeasi ordine in care sunt scrise si datele si coloanele.
- Daca au fost adaugate cu succes, apare mesajul "Datele au fost adaugate", in caz contrar apare mesajul de eroare.

Daca doriti sa adaugati mai multe linii in tabel, printr-o singura interogare, puteti folosi urmatorul model
<?php
// Aici adaugati comenzile pt. conectare si selectarea bazei de date

$sql = "INSERT INTO `nume_tabel` (coloana1, coloana2, coloana3)
    VALUES
        ('date1', 'date2', 'date3'),
        ('valoare1', 'valoare2', 'valoare3'),
        ('text1', 'text2', 'text3')";
if (mysql_query($sql))
    echo 'Datele au fost adaugate';
else
    echo "Datele nu au fost adaugate deoarece : ". mysql_errno(). " : ". mysql_error();
mysql_close();
?>

Observati sintaxa de scriere corecta a interogarilor MySQL in PHP, numele tabelului se scrie intre caracterele ( ` ` ) si valorile intre ghilimele simple ( ' ' )