Initial commit
This commit is contained in:
@@ -21,7 +21,6 @@ class DatabaseModel
|
||||
|
||||
$databases = $query->fetchAll(PDO::FETCH_COLUMN);
|
||||
|
||||
// Filter out system databases
|
||||
$system_dbs = ['information_schema', 'performance_schema', 'mysql', 'sys'];
|
||||
return array_diff($databases, $system_dbs);
|
||||
}
|
||||
@@ -35,7 +34,7 @@ class DatabaseModel
|
||||
{
|
||||
$database = DatabaseFactory::getFactory()->getConnection();
|
||||
|
||||
$sql = "SHOW TABLES FROM " . $database_name;
|
||||
$sql = "SHOW TABLES FROM `" . $database_name . "`";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute();
|
||||
|
||||
@@ -54,7 +53,7 @@ class DatabaseModel
|
||||
$table_details = array();
|
||||
|
||||
foreach ($tables as $table) {
|
||||
$sql = "SHOW TABLE STATUS FROM " . $database_name . " LIKE :table_name";
|
||||
$sql = "SHOW TABLE STATUS FROM `" . $database_name . "` LIKE :table_name";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute(array(':table_name' => $table));
|
||||
|
||||
@@ -87,7 +86,7 @@ class DatabaseModel
|
||||
$tables = self::getTablesInDatabase($database_name);
|
||||
|
||||
foreach ($tables as $table) {
|
||||
$sql = "DESCRIBE " . $database_name . "." . $table;
|
||||
$sql = "DESCRIBE `" . $database_name . "`.`" . $table . "`";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute();
|
||||
|
||||
@@ -152,13 +151,106 @@ class DatabaseModel
|
||||
{
|
||||
$database = DatabaseFactory::getFactory()->getConnection();
|
||||
|
||||
$sql = "SHOW COLUMNS FROM " . $database_name . "." . $table_name;
|
||||
$sql = "SHOW COLUMNS FROM `" . $database_name . "`.`" . $table_name . "`";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute();
|
||||
|
||||
return $query->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Export database as SQL dump
|
||||
* @param string $database_name
|
||||
* @return string
|
||||
*/
|
||||
public static function exportDatabase($database_name)
|
||||
{
|
||||
$database = DatabaseFactory::getFactory()->getConnection();
|
||||
$output = "-- Database Export: " . $database_name . "\n";
|
||||
$output .= "-- Generated: " . date('Y-m-d H:i:s') . "\n\n";
|
||||
$output .= "SET FOREIGN_KEY_CHECKS=0;\n";
|
||||
$output .= "SET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\n\n";
|
||||
|
||||
$tables = self::getTablesInDatabase($database_name);
|
||||
|
||||
foreach ($tables as $table) {
|
||||
$sql = "SHOW CREATE TABLE `" . $database_name . "`.`" . $table . "`";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute();
|
||||
$row = $query->fetch(PDO::FETCH_NUM);
|
||||
|
||||
$output .= "DROP TABLE IF EXISTS `" . $table . "`;\n";
|
||||
$output .= $row[1] . ";\n\n";
|
||||
|
||||
$sql = "SELECT * FROM `" . $database_name . "`.`" . $table . "`";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute();
|
||||
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
if (!empty($rows)) {
|
||||
foreach ($rows as $dataRow) {
|
||||
$columns = array_keys($dataRow);
|
||||
$values = array_map(function($val) use ($database) {
|
||||
if ($val === null) {
|
||||
return 'NULL';
|
||||
}
|
||||
return $database->quote($val);
|
||||
}, array_values($dataRow));
|
||||
|
||||
$output .= "INSERT INTO `" . $table . "` (`" . implode("`, `", $columns) . "`) VALUES (" . implode(", ", $values) . ");\n";
|
||||
}
|
||||
$output .= "\n";
|
||||
}
|
||||
}
|
||||
|
||||
$output .= "SET FOREIGN_KEY_CHECKS=1;\n";
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Export single table as SQL dump
|
||||
* @param string $database_name
|
||||
* @param string $table_name
|
||||
* @return string
|
||||
*/
|
||||
public static function exportTable($database_name, $table_name)
|
||||
{
|
||||
$database = DatabaseFactory::getFactory()->getConnection();
|
||||
$output = "-- Table Export: " . $table_name . " from " . $database_name . "\n";
|
||||
$output .= "-- Generated: " . date('Y-m-d H:i:s') . "\n\n";
|
||||
$output .= "SET FOREIGN_KEY_CHECKS=0;\n\n";
|
||||
|
||||
$sql = "SHOW CREATE TABLE `" . $database_name . "`.`" . $table_name . "`";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute();
|
||||
$row = $query->fetch(PDO::FETCH_NUM);
|
||||
|
||||
$output .= "DROP TABLE IF EXISTS `" . $table_name . "`;\n";
|
||||
$output .= $row[1] . ";\n\n";
|
||||
|
||||
$sql = "SELECT * FROM `" . $database_name . "`.`" . $table_name . "`";
|
||||
$query = $database->prepare($sql);
|
||||
$query->execute();
|
||||
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
if (!empty($rows)) {
|
||||
foreach ($rows as $dataRow) {
|
||||
$columns = array_keys($dataRow);
|
||||
$values = array_map(function($val) use ($database) {
|
||||
if ($val === null) {
|
||||
return 'NULL';
|
||||
}
|
||||
return $database->quote($val);
|
||||
}, array_values($dataRow));
|
||||
|
||||
$output .= "INSERT INTO `" . $table_name . "` (`" . implode("`, `", $columns) . "`) VALUES (" . implode(", ", $values) . ");\n";
|
||||
}
|
||||
}
|
||||
|
||||
$output .= "\nSET FOREIGN_KEY_CHECKS=1;\n";
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format bytes to human readable format
|
||||
* @param int $bytes
|
||||
|
||||
Reference in New Issue
Block a user