Script for Building Schema
<?php /** * User interface for the Schema Builder * * Will work from the command line or web browser. To use it from a command * line, do this: <kbd>php buildSchema.php <action></kbd> * * Where <action> is one of the following: * + <kbd>b</kbd> for build all tables * + <kbd>d</kbd> for drop all tables * + <kbd>bd</kbd> for build and drop all tables * * NOTE: Before running this script, you need to do two things: * + edit the DSN's in <kbd>./dsns.inc</kbd> * + edit the <var>$build_dbmss</var> array, below, uncommenting * the DBMS's you want to build schemas in. * * @package Portability * @author Daniel Convissor <danielc@analysisandsolutions.com> * @copyright 2002-2005 The Analysis and Solutions Company * @license http://www.analysisandsolutions.com/software/license.txt Simple Public License * @link http://www.analysisandsolutions.com/presentations/portability/ * @see buildSchema.inc, viewSchema.php */ $build_dbmss = array( //# 'access', // doesn't allow DEFAULT's in column definitions // 'db2', // 'fbsql', // 'firebird', // 'mysql', // 'mysqli', // 'oci8', // 'pgsql', // 'sqlite', // 'sybase', // the sybase and mssql extensions // 'mssql', // can't be loaded at the same time ); if (php_sapi_name() != 'cli') { ?> <head><title>buildSchema</title></head><pre> <a href="buildSchema.php?action=b">Build Only</a> <a href="buildSchema.php?action=bd">Build and Drop</a> <a href="buildSchema.php?action=d">Drop Only</a> <a href="viewSchema.php">View Schema</a> <?php } if (empty($build_dbmss)) { echo 'You need to uncomment at least one item in the' . ' $build_dbmss array inside this script.' . "\n"; exit; } if (!empty($_GET['action'])) { $action = $_GET['action']; } elseif (!empty($_SERVER['argv'][1])) { $action = $_SERVER['argv'][1]; } else { $action = ''; } if (!preg_match('/^b|d|bd$/', $action)) { echo "SYNTAX: php buildSchema.php action\n"; echo "The action argument must be one of the following:\n"; echo "b = Build only\n"; echo "d = Drop only\n"; echo "bd = Build and Drop\n"; exit; } require_once './dsns.inc'; require_once './portability.inc'; require_once './buildSchema.inc'; require_once 'DB.php'; $options = array( 'debug' => 2, 'portability' => DB_PORTABILITY_ALL, ); foreach ($build_dbmss as $dbms) { echo "============ $dbms ============\n"; if (!array_key_exists($dbms, $dsns)) { echo $dbms . ' does not match an element in $dsns.' . "\n"; echo ' Edit the $build_dbmss or $dsns arrays to fix the problem.' . "\n"; continue; } $db =& DB::connect($dsns[$dbms], $options); if (DB::isError($db)) { die($db->getUserInfo()); } $db->setErrorHandling(PEAR_ERROR_RETURN); $p =& new Portability($db); if ($action != 'd') { buildSchema($p, $db); } if ($action == 'd' || $action == 'bd') { dropSchema($p, $db); } } ?> DONE