mirror of
https://github.com/vrana/adminer.git
synced 2025-08-24 07:02:51 +02:00
Avoid fatal errors
This commit is contained in:
@@ -294,8 +294,7 @@ if (isset($_GET["mssql"])) {
|
||||
function table_status($name = "") {
|
||||
global $connection;
|
||||
$return = array();
|
||||
$result = $connection->query("SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID(" . $connection->quote(get_schema()) . ") AND type IN ('S', 'U', 'V')" . ($name != "" ? " AND name = " . $connection->quote($name) : ""));
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
foreach (get_rows("SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID(" . $connection->quote(get_schema()) . ") AND type IN ('S', 'U', 'V')" . ($name != "" ? " AND name = " . $connection->quote($name) : "")) as $row) {
|
||||
if ($name != "") {
|
||||
return $row;
|
||||
}
|
||||
@@ -315,14 +314,13 @@ if (isset($_GET["mssql"])) {
|
||||
function fields($table, $hidden = false) {
|
||||
global $connection;
|
||||
$return = array();
|
||||
$result = $connection->query("SELECT c.*, t.name type, d.definition [default]
|
||||
foreach (get_rows("SELECT c.*, t.name type, d.definition [default]
|
||||
FROM sys.all_columns c
|
||||
JOIN sys.all_objects o ON c.object_id = o.object_id
|
||||
JOIN sys.types t ON c.user_type_id = t.user_type_id
|
||||
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.parent_column_id
|
||||
WHERE o.schema_id = SCHEMA_ID(" . $connection->quote(get_schema()) . ") AND o.type IN ('S', 'U', 'V') AND o.name = " . $connection->quote($table)
|
||||
);
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
) as $row) {
|
||||
$type = $row["type"];
|
||||
$length = (ereg("char|binary", $type) ? $row["max_length"] : ($type == "decimal" ? "$row[precision],$row[scale]" : ""));
|
||||
$return[$row["name"]] = array(
|
||||
@@ -506,9 +504,8 @@ WHERE OBJECT_NAME(indexes.object_id) = " . $connection2->quote($table)
|
||||
|
||||
function foreign_keys($table) {
|
||||
global $connection;
|
||||
$result = $connection->query("EXEC sp_fkeys @fktable_name = " . $connection->quote($table));
|
||||
$return = array();
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
foreach (get_rows("EXEC sp_fkeys @fktable_name = " . $connection->quote($table)) as $row) {
|
||||
$foreign_key = &$return[$row["FK_NAME"]];
|
||||
$foreign_key["table"] = $row["PKTABLE_NAME"];
|
||||
$foreign_key["source"][] = $row["FKCOLUMN_NAME"];
|
||||
@@ -535,7 +532,7 @@ WHERE OBJECT_NAME(indexes.object_id) = " . $connection2->quote($table)
|
||||
|
||||
function trigger($name) {
|
||||
global $connection;
|
||||
$result = $connection->query("SELECT s.name [Trigger],
|
||||
$rows = get_rows("SELECT s.name [Trigger],
|
||||
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||||
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
|
||||
c.text
|
||||
@@ -543,22 +540,23 @@ 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;
|
||||
$return = reset($rows);
|
||||
if ($return) {
|
||||
$return["Statement"] = preg_replace('~^.+\\s+AS\\s+~isU', '', $return["text"]); //! identifiers, comments
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
function triggers($table) {
|
||||
global $connection;
|
||||
$return = array();
|
||||
$result = $connection->query("SELECT sys1.name,
|
||||
foreach (get_rows("SELECT sys1.name,
|
||||
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||||
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
|
||||
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()) {
|
||||
) as $row) { // triggers are not schema-scoped
|
||||
$return[$row["name"]] = array($row["Timing"], $row["Event"]);
|
||||
}
|
||||
return $return;
|
||||
|
Reference in New Issue
Block a user