PHP & MySQL: (tot) parcurgerea unei baze de date


Poate vă amintiţi că acum un an am avut un articol intitulat PHP & MySQL: parcurgerea unei baze de date, adresat desigur începătorilor. Acel scurt cod arăta cât de uşor este să parcurgi o bază de date. De fapt… pardon… acolo era parcurgerea unei tabele dintr-o bază de date. Tocmai pentru a mă corecta, m-am gândit să revin puţin la subiect şi să vedem cum putem parcurge de fapt o bază de date. Adică ştiindu-i numele (şi datele de conectare), cum putem afla ce tabele conţine ea? Simplu. Cheia este comanda MySQL SHOW TABLES.

[PHP]$utilizator="numeledeutilizator";
$parola="parolameasecreta";
$bazadedate="numelebazeidedate";
$server="localhost";
mysql_connect($server,$utilizator,$parola);
@mysql_select_db($bazadedate) or die( "Ups, nu merge…");
$tabele = mysql_query("SHOW TABLES");
while ($tabel = mysql_fetch_assoc($tabele))
foreach ($tabel as $db => $numetabel)
echo $numetabel.'<br>’;
mysql_close();[/PHP]

Primele patru linii dau datele de conectare. În linia 5 deschidem conexiunea şi în linia 6 alegem baza de date (pentru că pe un acelaşi server pot fi mai multe baze de date). În linia 7 executăm comanda MySQL deja amintită, după care nu ne rămâne decât să parcurgem şirul asociativ pentru a vedea numele tabelelor din baza de date aleasă de noi. (În paranteză fie spus, PHP oferă mysql_list_tables, dar e trecută la „vechituri”.) Simplu! Dar oare şi util? Desigur. Schimbăm o singură linie şi codul de mai sus face ceva foarte util: optimizează tabelele!

[PHP]$utilizator="numeledeutilizator";
$parola="parolameasecreta";
$bazadedate="numelebazeidedate";
$server="localhost";
mysql_connect($server,$utilizator,$parola);
@mysql_select_db($bazadedate) or die( "Ups, nu merge…");
$tabele = mysql_query("SHOW TABLES");
while ($tabel = mysql_fetch_assoc($tabele))
foreach ($tabel as $db => $numetabel)
mysql_query("OPTIMIZE TABLE ‘".$numetabel."’");
mysql_close();[/PHP]

Aţi depistat linia modificată? Da, corect, e vorba de linia 10, unde în locul unei afişări a numelui tabelei am executat o altă comandă MySQL, mai exact OPTIMIZE TABLE …. Putem face şi altceva? Da. De exemplu să aflăm date mai multe despre tabele. Mai jos vedeţi un cod care, ca mai sus, află ce tabele sunt în baza de date selectată, dar şi afişează „greutatea” lor în Kb.

[PHP]$utilizator="numeledeutilizator";
$parola="parolameasecreta";
$bazadedate="numelebazeidedate";
$server="localhost";
mysql_connect($server,$utilizator,$parola);
@mysql_select_db($bazadedate) or die( "Ups, nu merge…");
$tabele = mysql_query("SHOW TABLE STATUS FROM ".$bazadedate);
while ($tabel = mysql_fetch_array($tabele)){
$spatiu = ($tabel[‘Data_length’]+$tabel[‘Index_length’]) / 1024 ;
echo "Tabela cu numele <em>".$tabel[‘Name’]."</em> ocupa <em>".
round($spatiu,2)."</em> Kb.<br>";
}
mysql_close();[/PHP]

Au fost câteva exemple… Pornind de la ele se pot construi diverse lucruri utile.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (Neevaluat încă)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *