mirror of
https://github.com/vrana/adminer.git
synced 2025-08-23 14:43:08 +02:00
MS SQL schema support
This commit is contained in:
@@ -237,6 +237,10 @@ if (isset($_GET["mssql"])) {
|
||||
return "[" . str_replace("]", "]]", $idf) . "]";
|
||||
}
|
||||
|
||||
function table($idf) {
|
||||
return ($_GET["ns"] != "" ? idf_escape($_GET["ns"]) . "." : "") . idf_escape($idf);
|
||||
}
|
||||
|
||||
function connect() {
|
||||
global $adminer;
|
||||
$connection = new Min_DB;
|
||||
@@ -274,7 +278,13 @@ if (isset($_GET["mssql"])) {
|
||||
}
|
||||
|
||||
function tables_list() {
|
||||
return get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES");
|
||||
global $connection;
|
||||
/* no means for sys views discovery
|
||||
if ($_GET["ns"] == "sys" || $_GET["ns"] == "INFORMATION_SCHEMA") {
|
||||
return get_key_vals("SELECT name, type_desc FROM sys.system_objects WHERE type = 'V' AND schema_id = SCHEMA_ID('$_GET[ns]')");
|
||||
}
|
||||
*/
|
||||
return get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = " . $connection->quote(get_schema()));
|
||||
}
|
||||
|
||||
function count_tables($databases) {
|
||||
@@ -290,7 +300,7 @@ if (isset($_GET["mssql"])) {
|
||||
function table_status($name = "") {
|
||||
global $connection;
|
||||
$return = array();
|
||||
$result = $connection->query("SELECT TABLE_NAME AS Name, TABLE_TYPE AS Engine FROM information_schema.TABLES" . ($name != "" ? " WHERE TABLE_NAME = " . $connection->quote($name) : ""));
|
||||
$result = $connection->query("SELECT TABLE_NAME AS Name, TABLE_TYPE AS Engine FROM information_schema.TABLES WHERE TABLE_SCHEMA = " . $connection->quote(get_schema()) . ($name != "" ? " AND TABLE_NAME = " . $connection->quote($name) : ""));
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
if ($name != "") {
|
||||
return $row;
|
||||
@@ -310,7 +320,7 @@ if (isset($_GET["mssql"])) {
|
||||
$result = $connection->query("SELECT i.*, c.is_identity
|
||||
FROM information_schema.COLUMNS i
|
||||
JOIN sys.columns c ON OBJECT_NAME(c.object_id) = i.TABLE_NAME AND c.name = i.COLUMN_NAME
|
||||
WHERE i.TABLE_NAME = " . $connection->quote($table)
|
||||
WHERE i.TABLE_SCHEMA = " . $connection->quote(get_schema()) . " AND i.TABLE_NAME = " . $connection->quote($table)
|
||||
);
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$return[$row["COLUMN_NAME"]] = array(
|
||||
@@ -399,7 +409,7 @@ WHERE OBJECT_NAME(indexes.object_id) = " . $connection2->quote($table)
|
||||
}
|
||||
|
||||
function insert_into($table, $set) {
|
||||
return queries("INSERT INTO " . idf_escape($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES"));
|
||||
return queries("INSERT INTO " . table($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES"));
|
||||
}
|
||||
|
||||
function explain($connection, $query) {
|
||||
@@ -424,7 +434,7 @@ WHERE OBJECT_NAME(indexes.object_id) = " . $connection2->quote($table)
|
||||
|
||||
function truncate_tables($tables) {
|
||||
foreach ($tables as $table) {
|
||||
if (!queries("TRUNCATE TABLE " . idf_escape($table))) {
|
||||
if (!queries("TRUNCATE TABLE " . table($table))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -432,13 +442,22 @@ WHERE OBJECT_NAME(indexes.object_id) = " . $connection2->quote($table)
|
||||
}
|
||||
|
||||
function drop_views($views) {
|
||||
return queries("DROP VIEW " . implode(", ", array_map('idf_escape', $views)));
|
||||
return queries("DROP VIEW " . implode(", ", array_map('table', $views)));
|
||||
}
|
||||
|
||||
function drop_tables($tables) {
|
||||
return queries("DROP TABLE " . implode(", ", array_map('idf_escape', $tables)));
|
||||
return queries("DROP TABLE " . implode(", ", array_map('table', $tables)));
|
||||
}
|
||||
|
||||
function move_tables($tables, $views, $target) {
|
||||
foreach (array_merge($tables, $views) as $table) {
|
||||
if (!queries("ALTER SCHEMA " . idf_escape($target) . " TRANSFER " . table($table))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function trigger($name) {
|
||||
global $connection;
|
||||
$result = $connection->query("SELECT s.name [Trigger],
|
||||
@@ -448,7 +467,7 @@ c.text
|
||||
FROM sysobjects s
|
||||
JOIN syscomments c ON s.id = c.id
|
||||
WHERE s.xtype = 'TR' AND s.name = " . $connection->quote($name)
|
||||
);
|
||||
); // triggers are not schema-scoped
|
||||
$row = $result->fetch_assoc();
|
||||
$row["Statement"] = preg_replace('~^.+\\s+AS\\s+~isU', '', $row["text"]); //! identifiers, comments
|
||||
return $row;
|
||||
@@ -463,7 +482,7 @@ CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF
|
||||
FROM sysobjects sys1
|
||||
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
|
||||
WHERE sys1.xtype = 'TR' AND sys2.name = " . $connection->quote($table)
|
||||
);
|
||||
); // triggers are not schema-scoped
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$return[$row["name"]] = array($row["Timing"], $row["Event"]);
|
||||
}
|
||||
@@ -477,6 +496,22 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . $connection->quote($table)
|
||||
);
|
||||
}
|
||||
|
||||
function schemas() {
|
||||
return get_vals("SELECT name FROM sys.schemas");
|
||||
}
|
||||
|
||||
function get_schema() {
|
||||
global $connection;
|
||||
if ($_GET["ns"] != "") {
|
||||
return $_GET["ns"];
|
||||
}
|
||||
return $connection->result("SELECT SCHEMA_NAME()");
|
||||
}
|
||||
|
||||
function set_schema($schema) {
|
||||
return true; // ALTER USER is permanent
|
||||
}
|
||||
|
||||
function use_sql($database) {
|
||||
return "USE " . idf_escape($database);
|
||||
}
|
||||
@@ -490,7 +525,7 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . $connection->quote($table)
|
||||
}
|
||||
|
||||
function support($feature) {
|
||||
return ereg('^(trigger|drop_col)$', $feature); //! view|routine|scheme|
|
||||
return ereg('^(scheme|trigger|drop_col)$', $feature); //! view|routine|
|
||||
}
|
||||
|
||||
$jush = "mssql";
|
||||
|
@@ -223,6 +223,14 @@ if (!defined("DRIVER")) {
|
||||
return "`" . str_replace("`", "``", $idf) . "`";
|
||||
}
|
||||
|
||||
/** Get escaped table name
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function table($idf) {
|
||||
return idf_escape($idf);
|
||||
}
|
||||
|
||||
/** Connect to the database
|
||||
* @return mixed Min_DB or string for error
|
||||
*/
|
||||
@@ -376,7 +384,7 @@ if (!defined("DRIVER")) {
|
||||
function fields($table) {
|
||||
global $connection;
|
||||
$return = array();
|
||||
$result = $connection->query("SHOW FULL COLUMNS FROM " . idf_escape($table));
|
||||
$result = $connection->query("SHOW FULL COLUMNS FROM " . table($table));
|
||||
if ($result) {
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $row["Type"], $match);
|
||||
@@ -411,7 +419,7 @@ if (!defined("DRIVER")) {
|
||||
$connection2 = $connection;
|
||||
}
|
||||
$return = array();
|
||||
$result = $connection2->query("SHOW INDEX FROM " . idf_escape($table));
|
||||
$result = $connection2->query("SHOW INDEX FROM " . table($table));
|
||||
if ($result) {
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$return[$row["Key_name"]]["type"] = ($row["Key_name"] == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? "INDEX" : "UNIQUE")));
|
||||
@@ -430,7 +438,7 @@ if (!defined("DRIVER")) {
|
||||
global $connection, $on_actions;
|
||||
static $pattern = '`(?:[^`]|``)+`';
|
||||
$return = array();
|
||||
$create_table = $connection->result("SHOW CREATE TABLE " . idf_escape($table), 1);
|
||||
$create_table = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
||||
if ($create_table) {
|
||||
preg_match_all("~CONSTRAINT ($pattern) FOREIGN KEY \\(((?:$pattern,? ?)+)\\) REFERENCES ($pattern)(?:\\.($pattern))? \\(((?:$pattern,? ?)+)\\)(?: ON DELETE (" . implode("|", $on_actions) . "))?(?: ON UPDATE (" . implode("|", $on_actions) . "))?~", $create_table, $matches, PREG_SET_ORDER);
|
||||
foreach ($matches as $match) {
|
||||
@@ -455,7 +463,7 @@ if (!defined("DRIVER")) {
|
||||
*/
|
||||
function view($name) {
|
||||
global $connection;
|
||||
return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $connection->result("SHOW CREATE VIEW " . idf_escape($name), 1)));
|
||||
return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $connection->result("SHOW CREATE VIEW " . table($name), 1)));
|
||||
}
|
||||
|
||||
/** Get sorted grouped list of collations
|
||||
@@ -536,7 +544,7 @@ if (!defined("DRIVER")) {
|
||||
//! move triggers
|
||||
$return = true; // table list may by empty
|
||||
foreach (tables_list() as $table) {
|
||||
if (!queries("RENAME TABLE " . idf_escape($table) . " TO " . idf_escape($name) . "." . idf_escape($table))) {
|
||||
if (!queries("RENAME TABLE " . table($table) . " TO " . idf_escape($name) . "." . table($table))) {
|
||||
$return = false;
|
||||
break;
|
||||
}
|
||||
@@ -598,13 +606,13 @@ if (!defined("DRIVER")) {
|
||||
. $partitioning
|
||||
;
|
||||
if ($table == "") {
|
||||
return queries("CREATE TABLE " . idf_escape($name) . " (\n" . implode(",\n", $alter) . "\n) $status");
|
||||
return queries("CREATE TABLE " . table($name) . " (\n" . implode(",\n", $alter) . "\n) $status");
|
||||
}
|
||||
if ($table != $name) {
|
||||
$alter[] = "RENAME TO " . idf_escape($name);
|
||||
$alter[] = "RENAME TO " . table($name);
|
||||
}
|
||||
$alter[] = $status;
|
||||
return queries("ALTER TABLE " . idf_escape($table) . "\n" . implode(",\n", $alter));
|
||||
return queries("ALTER TABLE " . table($table) . "\n" . implode(",\n", $alter));
|
||||
}
|
||||
|
||||
/** Run commands to alter indexes
|
||||
@@ -616,7 +624,7 @@ if (!defined("DRIVER")) {
|
||||
foreach ($alter as $key => $val) {
|
||||
$alter[$key] = ($val[2] ? "\nDROP INDEX " : "\nADD $val[0] " . ($val[0] == "PRIMARY" ? "KEY " : "")) . $val[1];
|
||||
}
|
||||
return queries("ALTER TABLE " . idf_escape($table) . implode(",", $alter));
|
||||
return queries("ALTER TABLE " . table($table) . implode(",", $alter));
|
||||
}
|
||||
|
||||
/** Run commands to truncate tables
|
||||
@@ -625,7 +633,7 @@ if (!defined("DRIVER")) {
|
||||
*/
|
||||
function truncate_tables($tables) {
|
||||
foreach ($tables as $table) {
|
||||
if (!queries("TRUNCATE TABLE " . idf_escape($table))) {
|
||||
if (!queries("TRUNCATE TABLE " . table($table))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -637,7 +645,7 @@ if (!defined("DRIVER")) {
|
||||
* @return bool
|
||||
*/
|
||||
function drop_views($views) {
|
||||
return queries("DROP VIEW " . implode(", ", array_map('idf_escape', $views)));
|
||||
return queries("DROP VIEW " . implode(", ", array_map('table', $views)));
|
||||
}
|
||||
|
||||
/** Drop tables
|
||||
@@ -645,7 +653,7 @@ if (!defined("DRIVER")) {
|
||||
* @return bool
|
||||
*/
|
||||
function drop_tables($tables) {
|
||||
return queries("DROP TABLE " . implode(", ", array_map('idf_escape', $tables)));
|
||||
return queries("DROP TABLE " . implode(", ", array_map('table', $tables)));
|
||||
}
|
||||
|
||||
/** Move tables to other schema
|
||||
@@ -656,7 +664,7 @@ if (!defined("DRIVER")) {
|
||||
function move_tables($tables, $views, $target) {
|
||||
$rename = array();
|
||||
foreach (array_merge($tables, $views) as $table) { // views will report SQL error
|
||||
$rename[] = idf_escape($table) . " TO " . idf_escape($target) . "." . idf_escape($table);
|
||||
$rename[] = table($table) . " TO " . idf_escape($target) . "." . table($table);
|
||||
}
|
||||
return queries("RENAME TABLE " . implode(", ", $rename));
|
||||
//! move triggers
|
||||
@@ -757,7 +765,7 @@ if (!defined("DRIVER")) {
|
||||
* @return bool
|
||||
*/
|
||||
function insert_into($table, $set) {
|
||||
return queries("INSERT INTO " . idf_escape($table) . " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")");
|
||||
return queries("INSERT INTO " . table($table) . " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")");
|
||||
}
|
||||
|
||||
/** Explain select
|
||||
@@ -797,7 +805,7 @@ if (!defined("DRIVER")) {
|
||||
*/
|
||||
function create_sql($table) {
|
||||
global $connection;
|
||||
return $connection->result("SHOW CREATE TABLE " . idf_escape($table), 1);
|
||||
return $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
||||
}
|
||||
|
||||
/** Get SQL command to change database
|
||||
@@ -820,7 +828,7 @@ if (!defined("DRIVER")) {
|
||||
if ($result->num_rows) {
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$return .= "\n" . ($style == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($row["Trigger"]) . ";;\n" : "")
|
||||
. "CREATE TRIGGER " . idf_escape($row["Trigger"]) . " $row[Timing] $row[Event] ON " . idf_escape($row["Table"]) . " FOR EACH ROW\n$row[Statement];;\n";
|
||||
. "CREATE TRIGGER " . idf_escape($row["Trigger"]) . " $row[Timing] $row[Event] ON " . table($row["Table"]) . " FOR EACH ROW\n$row[Statement];;\n";
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
|
@@ -149,6 +149,10 @@ if (isset($_GET["pgsql"])) {
|
||||
return '"' . str_replace('"', '""', $idf) . '"';
|
||||
}
|
||||
|
||||
function table($idf) {
|
||||
return idf_escape($idf);
|
||||
}
|
||||
|
||||
function connect() {
|
||||
global $adminer;
|
||||
$connection = new Min_DB;
|
||||
@@ -351,7 +355,7 @@ WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = " . $connection->qu
|
||||
$alter[] = ($table != "" ? "ADD " : " ") . implode($val);
|
||||
} else {
|
||||
if ($column != $val[0]) {
|
||||
$queries[] = "ALTER TABLE " . idf_escape($table) . " RENAME $column TO $val[0]";
|
||||
$queries[] = "ALTER TABLE " . table($table) . " RENAME $column TO $val[0]";
|
||||
}
|
||||
$alter[] = "ALTER $column TYPE$val[1]";
|
||||
if (!$val[6]) {
|
||||
@@ -360,21 +364,21 @@ WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = " . $connection->qu
|
||||
}
|
||||
}
|
||||
if ($field[0] != "" || $val5 != "") {
|
||||
$queries[] = "COMMENT ON COLUMN " . idf_escape($table) . ".$val[0] IS " . ($val5 != "" ? substr($val5, 9) : "''");
|
||||
$queries[] = "COMMENT ON COLUMN " . table($table) . ".$val[0] IS " . ($val5 != "" ? substr($val5, 9) : "''");
|
||||
}
|
||||
}
|
||||
}
|
||||
$alter = array_merge($alter, $foreign);
|
||||
if ($table == "") {
|
||||
array_unshift($queries, "CREATE TABLE " . idf_escape($name) . " (\n" . implode(",\n", $alter) . "\n)");
|
||||
array_unshift($queries, "CREATE TABLE " . table($name) . " (\n" . implode(",\n", $alter) . "\n)");
|
||||
} elseif ($alter) {
|
||||
array_unshift($queries, "ALTER TABLE " . idf_escape($table) . "\n" . implode(",\n", $alter));
|
||||
array_unshift($queries, "ALTER TABLE " . table($table) . "\n" . implode(",\n", $alter));
|
||||
}
|
||||
if ($table != "" && $table != $name) {
|
||||
$queries[] = "ALTER TABLE " . idf_escape($table) . " RENAME TO " . idf_escape($name);
|
||||
$queries[] = "ALTER TABLE " . table($table) . " RENAME TO " . table($name);
|
||||
}
|
||||
if ($table != "" || $comment != "") {
|
||||
$queries[] = "COMMENT ON TABLE " . idf_escape($name) . " IS " . $connection->quote($comment);
|
||||
$queries[] = "COMMENT ON TABLE " . table($name) . " IS " . $connection->quote($comment);
|
||||
}
|
||||
if ($auto_increment != "") {
|
||||
//! $queries[] = "SELECT setval(pg_get_serial_sequence(" . $connection->quote($name) . ", ), $auto_increment)";
|
||||
@@ -395,36 +399,36 @@ WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = " . $connection->qu
|
||||
$create[] = ($val[2] ? "\nDROP CONSTRAINT " : "\nADD $val[0] " . ($val[0] == "PRIMARY" ? "KEY " : "")) . $val[1];
|
||||
} elseif ($val[2]) {
|
||||
$drop[] = $val[1];
|
||||
} elseif (!queries("CREATE INDEX " . idf_escape(uniqid($table . "_")) . " ON " . idf_escape($table) . " $val[1]")) {
|
||||
} elseif (!queries("CREATE INDEX " . idf_escape(uniqid($table . "_")) . " ON " . table($table) . " $val[1]")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return ((!$create || queries("ALTER TABLE " . idf_escape($table) . implode(",", $create)))
|
||||
return ((!$create || queries("ALTER TABLE " . table($table) . implode(",", $create)))
|
||||
&& (!$drop || queries("DROP INDEX " . implode(", ", $drop)))
|
||||
);
|
||||
}
|
||||
|
||||
function truncate_tables($tables) {
|
||||
return queries("TRUNCATE " . implode(", ", array_map('idf_escape', $tables)));
|
||||
return queries("TRUNCATE " . implode(", ", array_map('table', $tables)));
|
||||
return true;
|
||||
}
|
||||
|
||||
function drop_views($views) {
|
||||
return queries("DROP VIEW " . implode(", ", array_map('idf_escape', $views)));
|
||||
return queries("DROP VIEW " . implode(", ", array_map('table', $views)));
|
||||
}
|
||||
|
||||
function drop_tables($tables) {
|
||||
return queries("DROP TABLE " . implode(", ", array_map('idf_escape', $tables)));
|
||||
return queries("DROP TABLE " . implode(", ", array_map('table', $tables)));
|
||||
}
|
||||
|
||||
function move_tables($tables, $views, $target) {
|
||||
foreach ($tables as $table) {
|
||||
if (!queries("ALTER TABLE " . idf_escape($table) . " SET SCHEMA " . idf_escape($target))) {
|
||||
if (!queries("ALTER TABLE " . table($table) . " SET SCHEMA " . idf_escape($target))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
foreach ($views as $table) {
|
||||
if (!queries("ALTER VIEW " . idf_escape($table) . " SET SCHEMA " . idf_escape($target))) {
|
||||
if (!queries("ALTER VIEW " . table($table) . " SET SCHEMA " . idf_escape($target))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -459,7 +463,7 @@ WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = " . $connection->qu
|
||||
}
|
||||
|
||||
function insert_into($table, $set) {
|
||||
return queries("INSERT INTO " . idf_escape($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES"));
|
||||
return queries("INSERT INTO " . table($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES"));
|
||||
}
|
||||
|
||||
function explain($connection, $query) {
|
||||
|
@@ -203,6 +203,10 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
return '"' . str_replace('"', '""', $idf) . '"';
|
||||
}
|
||||
|
||||
function table($idf) {
|
||||
return idf_escape($idf);
|
||||
}
|
||||
|
||||
function connect() {
|
||||
return new Min_DB;
|
||||
}
|
||||
@@ -266,7 +270,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
function fields($table) {
|
||||
global $connection;
|
||||
$return = array();
|
||||
$result = $connection->query("PRAGMA table_info(" . idf_escape($table) . ")");
|
||||
$result = $connection->query("PRAGMA table_info(" . table($table) . ")");
|
||||
if (is_object($result)) {
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$type = strtolower($row["type"]);
|
||||
@@ -298,7 +302,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
if ($primary) {
|
||||
$return[""] = array("type" => "PRIMARY", "columns" => $primary, "lengths" => array());
|
||||
}
|
||||
$result = $connection->query("PRAGMA index_list(" . idf_escape($table) . ")");
|
||||
$result = $connection->query("PRAGMA index_list(" . table($table) . ")");
|
||||
if (is_object($result)) {
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$return[$row["name"]]["type"] = ($row["unique"] ? "UNIQUE" : "INDEX");
|
||||
@@ -315,7 +319,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
function foreign_keys($table) {
|
||||
global $connection;
|
||||
$return = array();
|
||||
$result = $connection->query("PRAGMA foreign_key_list(" . idf_escape($table) . ")");
|
||||
$result = $connection->query("PRAGMA foreign_key_list(" . table($table) . ")");
|
||||
if (is_object($result)) {
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$foreign_key = &$return[$row["id"]];
|
||||
@@ -400,14 +404,14 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
$alter = array_merge($alter, $foreign);
|
||||
if ($table != "") {
|
||||
foreach ($alter as $val) {
|
||||
if (!queries("ALTER TABLE " . idf_escape($table) . " $val")) {
|
||||
if (!queries("ALTER TABLE " . table($table) . " $val")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if ($table != $name && !queries("ALTER TABLE " . idf_escape($table) . " RENAME TO " . idf_escape($name))) {
|
||||
if ($table != $name && !queries("ALTER TABLE " . table($table) . " RENAME TO " . table($name))) {
|
||||
return false;
|
||||
}
|
||||
} elseif (!queries("CREATE TABLE " . idf_escape($name) . " (\n" . implode(",\n", $alter) . "\n)")) {
|
||||
} elseif (!queries("CREATE TABLE " . table($name) . " (\n" . implode(",\n", $alter) . "\n)")) {
|
||||
return false;
|
||||
}
|
||||
if ($auto_increment) {
|
||||
@@ -418,7 +422,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
|
||||
function alter_indexes($table, $alter) {
|
||||
foreach ($alter as $val) {
|
||||
if (!queries(($val[2] ? "DROP INDEX" : "CREATE" . ($val[0] != "INDEX" ? " UNIQUE" : "") . " INDEX " . idf_escape(uniqid($table . "_")) . " ON " . idf_escape($table)) . " $val[1]")) { //! primary key must be created in CREATE TABLE
|
||||
if (!queries(($val[2] ? "DROP INDEX" : "CREATE" . ($val[0] != "INDEX" ? " UNIQUE" : "") . " INDEX " . idf_escape(uniqid($table . "_")) . " ON " . table($table)) . " $val[1]")) { //! primary key must be created in CREATE TABLE
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -427,7 +431,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
|
||||
function truncate_tables($tables) {
|
||||
foreach ($tables as $table) {
|
||||
if (!queries("DELETE FROM " . idf_escape($table))) {
|
||||
if (!queries("DELETE FROM " . table($table))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -436,7 +440,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
|
||||
function drop_views($views) {
|
||||
foreach ($views as $view) {
|
||||
if (!queries("DROP VIEW " . idf_escape($view))) {
|
||||
if (!queries("DROP VIEW " . table($view))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -445,7 +449,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
|
||||
function drop_tables($tables) {
|
||||
foreach ($tables as $table) {
|
||||
if (!queries("DROP TABLE " . idf_escape($table))) {
|
||||
if (!queries("DROP TABLE " . table($table))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -493,7 +497,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
}
|
||||
|
||||
function insert_into($table, $set) {
|
||||
return queries("INSERT INTO " . idf_escape($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES"));
|
||||
return queries("INSERT INTO " . table($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES"));
|
||||
}
|
||||
|
||||
function explain($connection, $query) {
|
||||
|
Reference in New Issue
Block a user