From e75952cd7f25889f5b06c619c5b893a0f5a8f18b Mon Sep 17 00:00:00 2001 From: jakubvrana Date: Fri, 6 Jul 2007 09:49:33 +0000 Subject: [PATCH] Generalize foreign_keys() git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@59 7c3ca157-0c34-0410-bff1-cbf682f78f5c --- functions.inc.php | 4 +--- select.inc.php | 7 ++++++- table.inc.php | 14 +++----------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/functions.inc.php b/functions.inc.php index 0ad02c65..d35f4412 100644 --- a/functions.inc.php +++ b/functions.inc.php @@ -68,9 +68,7 @@ function foreign_keys($table) { foreach ($matches as $match) { preg_match_all($pattern, $match[1], $source); preg_match_all($pattern, $match[4], $target); - foreach ($source[1] as $val) { - $return[idf_unescape($val)][] = array(idf_unescape($match[2]), idf_unescape($match[3]), array_map('idf_unescape', $source[1]), array_map('idf_unescape', $target[1])); - } + $return[] = array(idf_unescape($match[2]), idf_unescape($match[3]), array_map('idf_unescape', $source[1]), array_map('idf_unescape', $target[1])); } return $return; } diff --git a/select.inc.php b/select.inc.php index d8e11d27..0d1c6a26 100644 --- a/select.inc.php +++ b/select.inc.php @@ -72,7 +72,12 @@ $found_rows = mysql_result(mysql_query(" SELECT FOUND_ROWS()"), 0); // space for if (!mysql_num_rows($result)) { echo "

" . lang('No rows.') . "

\n"; } else { - $foreign_keys = foreign_keys($_GET["select"]); + $foreign_keys = array(); + foreach (foreign_keys($_GET["select"]) as $foreign_key) { + foreach ($foreign_key[2] as $val) { + $foreign_keys[$val][] = $foreign_key; + } + } $childs = array(); $result1 = mysql_query("SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = '" . mysql_real_escape_string($_GET["db"]) . "' AND REFERENCED_TABLE_NAME = '" . mysql_real_escape_string($_GET["select"]) . "' ORDER BY ORDINAL_POSITION"); while ($row1 = mysql_fetch_assoc($result1)) { diff --git a/table.inc.php b/table.inc.php index de172ec0..a47a956b 100644 --- a/table.inc.php +++ b/table.inc.php @@ -22,23 +22,15 @@ if ($indexes) { } echo '

' . lang('Alter indexes') . "

\n"; -$result = mysql_query("SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = '" . mysql_real_escape_string($_GET["db"]) . "' AND TABLE_NAME = '" . mysql_real_escape_string($_GET["table"]) . "' AND REFERENCED_TABLE_NAME IS NOT NULL ORDER BY ORDINAL_POSITION"); -if (mysql_num_rows($result)) { - $foreign_keys = array(); - while ($row = mysql_fetch_assoc($result)) { - $foreign_keys[$row["CONSTRAINT_NAME"]][0] = $row["REFERENCED_TABLE_SCHEMA"]; - $foreign_keys[$row["CONSTRAINT_NAME"]][1] = $row["REFERENCED_TABLE_NAME"]; - $foreign_keys[$row["CONSTRAINT_NAME"]][2][] = htmlspecialchars($row["COLUMN_NAME"]); - $foreign_keys[$row["CONSTRAINT_NAME"]][3][] = htmlspecialchars($row["REFERENCED_COLUMN_NAME"]); - } +$foreign_keys = foreign_keys($_GET["table"]); +if ($foreign_keys) { echo "

" . lang('Foreign keys') . "

\n"; echo "\n"; foreach ($foreign_keys as $foreign_key) { - echo "\n"; + echo "\n"; } echo "
" . implode(", ", $foreign_key[2]) . "" . (strlen($foreign_key[0]) && $foreign_key[0] !== $_GET["db"] ? "" . htmlspecialchars($foreign_key[0]) . "." : "") . "" . htmlspecialchars($foreign_key[1]) . "(" . implode(", ", $foreign_key[3]) . ")
" . implode(", ", $foreign_key[2]) . "" . (strlen($foreign_key[0]) && $foreign_key[0] !== $_GET["db"] ? "" . htmlspecialchars($foreign_key[0]) . "." : "") . htmlspecialchars($foreign_key[1]) . "(" . implode(", ", $foreign_key[3]) . ")
\n"; } -mysql_free_result($result); $result = mysql_query("SHOW TRIGGERS LIKE '" . mysql_real_escape_string($_GET["table"]) . "'"); if (mysql_num_rows($result)) {