]> git.joonet.de Git - adminer.git/commitdiff
Primary key links
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Tue, 10 Jul 2007 20:51:14 +0000 (20:51 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Tue, 10 Jul 2007 20:51:14 +0000 (20:51 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@107 7c3ca157-0c34-0410-bff1-cbf682f78f5c

abstraction.inc.php
functions.inc.php

index 771f3875b40d5795a1ae1cad6f43b7e02607242e..517c6528e437182667fad53073dc67c92f734d18 100644 (file)
@@ -98,6 +98,7 @@ if (extension_loaded("mysqli")) {
                        $row->orgtable = $row->table;
                        $row->orgname = $row->name;
                        $row->charsetnr = ($row->blob ? 63 : 0);
+                       $row->flags = ($row->primary_key ? 2 : 0);
                        return $row;
                }
                
index 56bd91ed703254d0c03b6b9dce5463574bcc30fe..05b70e9b454785d45bbf3ddc2e4fa63bd52a81d9 100644 (file)
@@ -58,11 +58,13 @@ function indexes($table) {
        global $mysql;
        $return = array();
        $result = $mysql->query("SHOW INDEX FROM " . idf_escape($table));
-       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")));
-               $return[$row["Key_name"]]["columns"][$row["Seq_in_index"]] = $row["Column_name"];
+       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")));
+                       $return[$row["Key_name"]]["columns"][$row["Seq_in_index"]] = $row["Column_name"];
+               }
+               $result->free();
        }
-       $result->free();
        return $return;
 }
 
@@ -186,6 +188,7 @@ function get_file($key) {
 }
 
 function select($result) {
+       global $SELF;
        if (!$result->num_rows) {
                echo "<p class='message'>" . lang('No rows.') . "</p>\n";
        } else {
@@ -199,8 +202,7 @@ function select($result) {
                                $blobs = array();
                                for ($j=0; $j < count($row); $j++) {
                                        $field = $result->fetch_field();
-                                       if (strlen($field->orgtable) && $field->primary_key) {
-                                               $links[$j] = $field->orgtable;
+                                       if (strlen($field->orgtable) && $field->flags & 2) {
                                                if (!isset($indexes[$field->orgtable])) {
                                                        $indexes[$field->orgtable] = array();
                                                        foreach (indexes($field->orgtable) as $index) {
@@ -211,9 +213,11 @@ function select($result) {
                                                        }
                                                        $columns[$field->orgtable] = $indexes[$field->orgtable];
                                                }
-                                               unset($columns[$field->orgtable][$field->orgname]);
-                                               $indexes[$field->orgtable][$field->orgname] = $j;
-                                               $links[$j] = $field->orgtable;
+                                               if (isset($columns[$field->orgtable][$field->orgname])) {
+                                                       unset($columns[$field->orgtable][$field->orgname]);
+                                                       $indexes[$field->orgtable][$field->orgname] = $j;
+                                                       $links[$j] = $field->orgtable;
+                                               }
                                        }
                                        if ($field->charsetnr == 63) {
                                                $blobs[$j] = true;