Avere a disposizione un dump di un database é sempre importante per vari e ovvii motivi.
Un modo originale, ma che fornisce un risultato pratico e utilizzabile in svariate circostanze, è quello di ottenere, tramite script PHP, lo schema di un database MySQL come XML. Sapete benissimo quanto sia importante e quante potenzialità abbia questo linguaggio di markup, e, pertanto, avere uno schema di un db descritto da un file xml potrebbe avere notevoli vantaggi a seconda delle esigenze del caso.
Il codice riportato qui sotto é preso da questo interessante articolo e, alla fine, farò alcune veloci considerazioni :
<?php
// database constants da cambiare in relazione al vostro da esportare
define("DB_SERVER", "localhost");
define("DB_USER", "root");
define("DB_PASS", "password");
define("DB_NAME", "name_db");
// connection to the database
$dbhandle = mysql_connect(DB_SERVER, DB_USER, DB_PASS)
or die("Unable to connect to MySQL");
// select a database to work with
$selected = mysql_select_db(DB_NAME, $dbhandle)
or die("Could not select examples");
// return all available tables
$result_tbl = mysql_query( "SHOW TABLES FROM ".DB_NAME, $dbhandle );
$tables = array();
while ($row = mysql_fetch_row($result_tbl)) {
$tables[] = $row[0];
}
$output = "<?xml version=\"1.0\" ?>\n";
$output .= "<schema>";
// iterate over each table and return the fields for each table
foreach ( $tables as $table ) {
$output .= "<table name=\"$table\">";
$result_fld = mysql_query( "SHOW FIELDS FROM ".$table, $dbhandle );
while( $row1 = mysql_fetch_row($result_fld) ) {
$output .= "<field name=\"$row1[0]\" type=\"$row1[1]\"";
$output .= ($row1[3] == "PRI") ? " primary_key=\"yes\" />" : " />";
}
$output .= "</table>";
}
$output .= "</schema>";
// tell the browser what kind of file is come in
header("Content-type: text/xml");
// print out XML that describes the schema
echo $output;
// close the connection
mysql_close($dbhandle);
?>
Dopo aver correttamente definito le costanti, vi connetterete al db MySQL e utilizzerete il comando SHOW TABLES per ottenere tutte le tabelle del database. Fatto questo, si passa ad iterare le singole tabelle per estrarre i campi di ogni tabella sfruttando il comando SHOW FIELDS.
La parte finale del codice, invece, è riservata ad inserire tutte le informazioni estratte in un file XML.



