public function Create(\Database $db) { if ($db == null) { $db = new Database(); } //create the table $db->createField(EventTable::Id, "Varchar(40)", "PRIMARY KEY"); $db->createField(EventTable::Privacy, "Varchar(50)", "Not Null"); $db->createField(EventTable::Status, "int", "DEFAULT 0"); $db->createField(EventTable::CreatorId, "Varchar(40)", "NOT NULL"); $db->createField(EventTable::Title, "Varchar(50)", "NOT NULL"); $db->createField(EventTable::Venue, "Varchar(40)", " Not null"); $db->createField(EventTable::CreateDate, "Varchar(40)", "NOT NULL"); $db->createField(EventTable::Description, "Text", ""); $db->createField(EventTable::StartDate, " Varchar(40)", "NOT NULL"); $db->createField(EventTable::Going, "int", "default 0"); $db->createField(EventTable::SeachableKeywords, "Text", ""); $db->createField(EventTable::CurrencyCountry, "Varchar(50)", ""); $db->createField(EventTable::Image, " Varchar(50)", ""); $db->createField(EventTable::Fees, "DOUBLE(16,2)", "default 0.0"); //$db->createFields(EventTable::StartTime, "Varchar(40)", "NOT NULL"); $db->createField(EventTable::Duration, "Varchar(50)", "Not Null"); $db->createField("FULLTEXT KEY " . EventTable::Title, "(" . EventTable::Title . "," . EventTable::Description . "," . EventTable::SeachableKeywords . "," . EventTable::Venue . ")", ""); $db->createTable(EventTable::TableName); }
public function Create(\Database $db) { $db->createField(TableAttendance::EVENT_ID, "Varchar(40)", "NOT NULL"); $db->createField(TableAttendance::USER_ID, "Varchar(40)", "NOT NULL"); $db->createField("CONSTRAINT pk_event_goer ", "PRIMARY KEY (" . TableAttendance::EVENT_ID . "," . TableAttendance::USER_ID . ")", ""); $db->createTable(TableAttendance::TableName); }
/** * @return int */ public function upgrade() { $change_column_num = 0; $table_name = $this->getTableName(); $columns = $this->getDBColumns(); $index_columns = $this->getIndexColumns(); $reference_columns = $this->getDBReferenceColumn(); if ($this->db->checkTableExists($table_name)) { $results = $this->db->getTableColumns($table_name); $results_index = $this->db->getTableIndex($table_name); //$results_foreignkey = $this->db->getTableForeignKey($table_name); $add_columns = array(); $add_index_columns = array(); $change_columns = array(); $delete_columns = array(); $delete_indexs = array(); $delete_foreignkey = array(); $columns_keys = array_keys($columns); foreach ($columns as $k => $v) { if (isset($results[$k])) { if (!$v->isEqual($results[$k])) { $change_columns[$k] = $v; } } else { $add_columns[$k] = $v; } } foreach ($results as $k => $v) { if (!isset($columns[$k])) { $delete_columns[$k] = $v; } } foreach ($index_columns as $k => $v) { if (isset($results_index[$k])) { //$change_columns[$k] = $v; } else { $add_index_columns[$k] = $v; } } foreach ($results_index as $k) { if ($k == "PRIMARY") { continue; } if (preg_match('/^(.+_fk)$/', $k, $matchs)) { if (!preg_match('/^(.+)_(.+_fk)$/', $matchs[1], $mt) || !isset($reference_columns[$mt[2]])) { $delete_foreignkey[$k] = $k; } continue; } if (!isset($index_columns[$k])) { $delete_indexs[$k] = $k; } } // update foreach ($delete_foreignkey as $k) { if ($this->db->dropForeignKey($table_name, $k) && $this->db->affectedRows() > 0) { $change_column_num++; } } foreach ($delete_columns as $k => $v) { if ($this->db->alterTableDrop($table_name, $k) && $this->db->affectedRows() > 0) { $change_column_num++; } } foreach ($delete_indexs as $k => $v) { if ($this->db->alterTableDropIndex($table_name, $k) && $this->db->affectedRows() > 0) { $change_column_num++; } } foreach ($change_columns as $k => $v) { if ($this->db->alterTableChange($table_name, $k, $v, $k) && $this->db->affectedRows() > 0) { $change_column_num++; } } foreach ($add_columns as $k => $v) { $current_key = array_search($k, $columns_keys); if ($this->db->alterTableAdd($table_name, $k, $v, $current_key > 0 ? $this->db->escapeColumn($columns_keys[$current_key - 1]) : "FIRST") && $this->db->affectedRows() > 0) { $change_column_num++; } } foreach ($add_index_columns as $k => $v) { if ($this->db->alterTableAddIndex($table_name, $v->generateName(), $v->getFields()) && $this->db->affectedRows() > 0) { $change_column_num++; } } // update callback $this->modelUpdate(); } else { if ($result = $this->db->createTable($table_name, $columns, $this->table_options) && $this->db->affectedRows() > 0) { $change_column_num++; } // update callback $this->modelUpdate(); } return $change_column_num; }
$site_config_path = "../application/config/config.php"; $dbConfigPath = "../application/config/database.php"; $redirect_url = isset($_SERVER['HTTPS']) && $_SERVER['HTPPS'] == 'on' ? 'https' : 'http'; $redirect_url = "://" . $_SERVER['HTTP_HOST']; $redirect_url = str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']); $style_url = $redirect_url; if (!empty($_POST)) { require_once 'includes/config.php'; require_once 'includes/database.php'; $config = new Config(); $db = new Database(); if ($config->checkPostData($_POST)) { // if (!$db->createDatabase($_POST)) { // $error = "The database could not be created, please verify your settings."; // } else if (!$db->createTable($_POST)) { $error = "The database tables could not be created, please verify your settings."; } else { if (!$db->createAdmin($_POST)) { $error = "The admin details could not be saved. Please verify."; } else { if (!$config->writeConfig($_POST)) { $error = "The configuration file could not be written, \n please chmod the files to 0777"; } else { if (!$config->createExtraction($_POST['base_url'])) { $error = "The extraction js file could not be written, \n please chmod the files to 0777"; } } } } if (!isset($error)) {
<?php include '../common/Database.class.php'; $dbHelper = new Database(); $database = "contactdb"; $tbl_member = "member"; $sql = 'CREATE DATABASE IF NOT EXISTS contactdb'; $dbHelper->createDatabase($database, $sql); $sql = 'CREATE TABLE IF NOT EXISTS member ( ' . 'id int(10) UNSIGNED NOT NULL AUTO_INCREMENT, ' . 'email varchar(255) NOT NULL UNIQUE, ' . 'password int(10) NOT NULL, ' . 'PRIMARY KEY (id) ' . ') ENGINE=InnoDB DEFAULT CHARSET=latin1'; $dbHelper->createTable($database, $tbl_member, $sql);
/** * database connection test. */ public function test_database_connection() { $name = "test_database_connection"; $db = new Database(); test($db->getDatabaseObject()); if ($db->tableExists($name)) { $db->dropTable($name); } // table exists test($db->tableExists($name) == FALSE); $db->createTable($name); test($db->tableExists($name)); // quote // @Attention 반드시 아래의 quote 가 통과를 해야 한다. $ret_str = $db->quote("str"); test($ret_str == "'str'", '', 'Quote failed...'); $ret_str = $db->quote("st'r"); test($ret_str == "'st''r'", '', 'Quote failed...'); // table drop $db->dropTable($name); test($db->tableExists($name) == FALSE); }
echo 'Found ' . count($useless) . ' useless columns in existing table : ' . implode(', ', $useless) . "\n"; foreach ($useless as $column) { Database::removeTableColumn($table, $column); } } echo 'Check column format' . "\n"; foreach ($required_columns as $column) { if (in_array($column, $missing)) { continue; } // Already created with the right format $problems = Database::checkTableColumnFormat($table, $column, $datamap[$column], function ($message) { echo "\t" . $message . "\n"; }); if ($problems) { echo 'Column ' . $column . ' has bad format, updating it' . "\n"; Database::updateTableColumnFormat($table, $column, $datamap[$column], $problems); } } } else { echo 'Table is missing, create it' . "\n"; Database::createTable($table, $datamap); } echo 'Done for table ' . $table . "\n"; } echo 'Everything went well' . "\n"; echo 'Database structure is up to date' . "\n"; } catch (Exception $e) { $uid = $e instanceof LoggingException ? $e->getUid() : 'no available uid'; die('Encountered exception : ' . $e->getMessage() . ', see logs for details (uid: ' . $uid . ') ...'); }
/** * Update database */ public static function updateStructure() { $class = static::getClassName(); Logger::info('Updating ' . $class . ' database structure'); $datamap = static::getDataMap(); $table = static::getDBTable(); // Check if table exists Logger::info('Look for table ' . $table); if (Database::tableExists($table)) { Logger::info('Table found, check columns'); $existing_columns = Database::getTableColumns($table); Logger::info('Found ' . count($existing_columns) . ' columns in existing table : ' . implode(', ', $existing_columns)); $required_columns = array_keys($datamap); Logger::info('Found ' . count($required_columns) . ' columns in required table : ' . implode(', ', $required_columns)); $missing = array(); foreach ($required_columns as $c) { if (!in_array($c, $existing_columns)) { $missing[] = $c; } } if (count($missing)) { Logger::info('Found ' . count($missing) . ' missing columns in existing table : ' . implode(', ', $missing)); foreach ($missing as $column) { Database::createTableColumn($table, $column, $datamap[$column]); } } $useless = array(); foreach ($existing_columns as $c) { if (!in_array($c, $required_columns)) { $useless[] = $c; } } if (count($useless)) { Logger::info('Found ' . count($useless) . ' useless columns in existing table : ' . implode(', ', $useless)); foreach ($useless as $column) { Database::removeTableColumn($table, $column); } } Logger::info('Check column format'); foreach ($required_columns as $column) { if (in_array($column, $missing)) { continue; } // Already created with the right format $problems = Database::checkTableColumnFormat($table, $column, $datamap[$column], function ($message) { Logger::info("\t" . $message); }); if ($problems) { Logger::info('Column ' . $column . ' has bad format, updating it'); Database::updateTableColumnFormat($table, $column, $datamap[$column], $problems); } } } else { Logger::info('Table is missing, create it'); Database::createTable($table, $datamap); } Logger::info('Done for ' . $class); }
/** * Create a new table. * The table will have a single field - the integer key ID. * @param string $table Name of table to create. */ static function createTable($table) { return DB::$globalConn->createTable($table); }