E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Introducere in PHP (24)

IX. PHP si MySQL (partea a II-a)

03.06.2008
IX. PHP si MySQL (partea a II-a)

In acest tutorial vei vedea cum sa folosesti PHP pentru a extrage informatii dintr-o baza de date, utilizand apoi aceste informatii pentru a construi o pagina Web dinamica.

Total vizualizari: 5950 5950 afisari   |   Comentarii  0   |   Rating   |   (3 voturi)   |   Timp necesar: 30 min 30 min   |   Nivel de cunostiinte necesar: Incepator  Incepator

Sursa:  Zend.com  
Autor:  Vikram Vaswani
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
« 1 2
comenteaza printeaza

O privire mai atenta
PHP propune un mare numar de functii concepute pentru a-ti spune tot ce ai vrea vreodata sa stii despre clientul si serverul MySQL, numarul versiunii acestora, numarul total de baze de date disponibile, tabelele din fiecare baza de date, rularea procesului... tu doar trebuie sa soliciti, si probabil ca informatia exista acolo. Iata un exemplu care foloseste aceste functii pentru a-ti da o viziune panoramica asupra a ceea ce se petrece la interiorul RDBMS-ului tau MySQL:

<html> 
<head> 
<basefont face="Arial"> 
</head> 
<body> 
<?php 
 
// seteaza variabilele de acces la serverul MySQL 
$host = "localhost"; 
$user = "root"; 
$pass = "guessme"; 
$db = "testdb"; 
 
// deschide conexiunea  
$connection = mysql_connect($host, $user, $pass)
 or die ("Nu ma pot conecta la serverul MySQL!"); 
 
// citeste lista de baze de date 
$query = "SHOW DATABASES"; 
$result = mysql_query($query) or die 
("Interogarea contine o eroare: $query. ".mysql_error()); 
 
echo "<ul>"; 
while ($row = mysql_fetch_array($result)) { 
    echo "<li>".$row[0]; 
 
    // pentru fiecare baza de date, citeste lista tabelelor si afiseaz-o 
    $query2 = "SHOW TABLES FROM ".$row[0]; 
    $result2 = mysql_query($query2) or die 
    ("Interogarea contine o eroare: $query2. ".mysql_error()); 
    echo "<ul>"; 
    while ($row2 = mysql_fetch_array($result2)) { 
        echo "<li>".$row2[0]; 
    } 
    echo "</ul>"; 
} 
echo "</ul>"; 
 
// afiseaza versiunea si informatiile host-ului 
echo "Versiune client: ".mysql_get_client_info()."<br />"; 
echo "Versiune server: ".mysql_get_server_info()."<br />"; 
echo "Versiune protocol: ".mysql_get_proto_info()."<br />"; 
echo "Host: ".mysql_get_host_info()."<br />"; 
 
// afiseaza statusul serverului
$status = mysql_stat(); 
echo $status; 
 
// inchide conexiunea 
mysql_close($connection); 
?> 
</body> 
</html>

Prima parte a acestui script este destul de simpla: ea ruleaza interogarea SHOW DATABASES pentru a obtine o lista a bazelor de date, iar apoi parcurge lista si ruleaza comanda SHOW TABLES pentru a extrage lista de tabele din interiorul fiecarei baze. Apoi, functiile mysql_get_*_info() furnizeaza numarul versiunii client, numarul versiunii MySQL, numarul versiunii protocolului special MySQL folosit pentru comunicarea client-server, numele curent al host-ului, precum si modul de conectare la serverul MySQL. In sfarsit, ceea ce apare nou in PHP 4.3.0 este functia mysql_stat(), care returneaza un sir de caractere ce contine informatii de stare a serverului MySQL (inclusiv informatii despre timpul de functionare al serverului, tabele deschise, interogari pe secunda precum si alte informatii de ordin statistic).

Uups!
S-a terminat? Nu, nu tocmai, deocamdata - inainte sa iesi in "lumea dezlantuita" si sa demarezi constructii de Web site-uri cool cu orientare pe date, ar trebui sa fii constient de faptul ca ambele extensii MySQL vin cu functii puternice de detectare a erorilor, care pot mari viteza timpului de rulare. Arunca o privire la urmatorul exemplu, care contine in mod intentionat o eroare in cadrul interogarii SELECT:

<?php 
// conectarea la baza de date 
$connection = mysql_connect("localhost", 
"test", "test") or die("Server sau user invalide"); 
 
mysql_select_db("testdb", $connection) or die
("Baza de date incorecta"); 
 
// creeaza interogarea
$query = "SELECT FROM symbols"; 
 
// executa interogarea
$result = mysql_query($query,$connection); 
 
// afiseaza erorile 
if(!$result) { 
    $error_number = mysql_errno(); 
    $error_msg = mysql_error(); 
    echo "Eroare MySQL $error_number: $error_msg";     
} 
// inchide conexiunea 
mysql_close($connection); 
?>

Functia mysql_errno() afiseaza codul de eroare returnat de catre MySQL in cazul in care exista o eroare in instructiunea ta SQL, in timp ce functia mysql_error() returneaza mesajul de eroare propriu-zis. Activeaza-le pe ambele, si vei vedea ca ele pot sa reduca in mod substantial timpul pe care il pierzi reparand erorile de program.

Arborele de coduri ext/mysqli include doua functii aditionale pentru erorile de conexiune, anume mysqli_connect_errno() si mysqli_connect_error(), care contin numai informatii asupra erorilor de conexiune (nu si asupra celor de interogare). Foloseste-le pentru a depana erorile din conexiunile tale MySQL, ca in exemplul de mai jos:

<?php 
// creeaza obiectul mysqli
// deschide conexiunea 
$mysqli = new mysqli("localhost", "test", "test", "testdb"); 
 
// verifica daca au aparut erori 
if (mysqli_connect_errno()) { 
    die("Nu ma pot conecta la serverul MySQL: ".mysqli_connect_error()); 
} 
 
// creeaza interogarea 
$query = "SELECT FROM symbols"; 
 
// executa interogarea
$result = $mysqli->query($query); 
 
// afiseaza erorile 
if(!$result) { 
    $error_number = $mysqli->errno; 
    $error_msg = $mysqli->error; 
    echo "Eroare MySQL $error_number: $error_msg";     
} 
// inchide conexiunea 
$mysqli->close(); 
?>

Si, in caz ca te intrebai de ce nu am folosit sintaxa pe obiecte pentru cele doua functii utilizate in script-ul de mai sus, raspunsul este unul simplu: nu se poate. Daca intervine o eroare in conectarea la server, obiectul mysqli() nu va fi creat, si astfel metodele si proprietatile ce au legatura cu acel obiect nu vor exista. Din acest motiv, pentru a depana erorile de conexiune din ext/mysqli, trebuie ca intotdeauna sa folosesti notatii procedurale in detrimentul celor folosite in programarea orientata pe obiecte.

Pagina:
« 1 2
comenteaza printeaza
Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(3 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4430
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4320
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4280
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4125
Tutoriale scrise de kheops
kheops Rang utilizator kheops - Mediu
4084
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Word Powerpoint Vista XHTML Verilog Action Script Flash Gimp Illustrator Sony Vegas Javascript Dreamweaver Excel Outlook StyleSheet HTML Fotografie Python SEO Fireworks Photoshop AJAX Ruby on Rails Lightroom PHP Swift 3D Bridge CSS RoR COREL DRAW XML JSON Java SWF MySQL PSD
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software