The script below reads the schema from a MySQL
database and outputs XML that describes the schema. At first we connect
to a MySQL database and use the SHOW TABLES command to return all the
tables in the database.
PHP: Export Database Schema as XML
Sometimes it can be useful to have a dump of the current database
schema. The script below reads the schema from a MySQL database and
outputs XML that describes the schema.
At first we connect to a MySQL database and use the SHOW TABLES
command to return all the tables in the database. Next, we iterate over
each table and return the fields for each table using the SHOW FIELDS command. Finally, we put all of the returned information into XML.
Have a look at the code:
<?php
// database constants
// make sure the information is correct
define("DB_SERVER", "localhost");
define("DB_USER", "root");
define("DB_PASS", "password");
define("DB_NAME", "tutorials");
$dbhandle = mysql_connect(DB_SERVER, DB_USER, DB_PASS)
or die("Unable to connect to MySQL");
$selected = mysql_select_db(DB_NAME, $dbhandle)
or die("Could not select examples");
$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>";
header("Content-type: text/xml");
// print out XML that describes the schema
echo $output;
mysql_close($dbhandle);
?>
You should note that this code is specific to MySQL database. The commands such as SHOW TABLES and SHOW FIELDS are also available for other databases but are specified slightly differently.
|