]> git.joonet.de Git - adminer.git/commitdiff
Search non-ASCII data only in text columns (bug #3564415)
authorJakub Vrana <jakub@vrana.cz>
Sun, 9 Sep 2012 18:03:02 +0000 (11:03 -0700)
committerJakub Vrana <jakub@vrana.cz>
Sun, 9 Sep 2012 18:03:02 +0000 (11:03 -0700)
adminer/include/adminer.inc.php
adminer/include/functions.inc.php

index 550f75580105b948ba3925e03d19991f61bfd5bf..96d3301a136c664e5414a5ff2001aa36ddcb456e 100644 (file)
@@ -402,9 +402,12 @@ username.form['auth[driver]'].onchange();
                                        // find anywhere
                                        $cols = array();
                                        foreach ($fields as $name => $field) {
-                                               if (is_numeric($val["val"]) || !ereg('int|float|double|decimal|bit', $field["type"])) {
+                                               $is_text = ereg('char|text|enum|set', $field["type"]);
+                                               if ((is_numeric($val["val"]) || !ereg('int|float|double|decimal|bit', $field["type"]))
+                                                       && (!ereg("[\x80-\xFF]", $val["val"]) || $is_text)
+                                               ) {
                                                        $name = idf_escape($name);
-                                                       $cols[] = ($jush == "sql" && ereg('char|text|enum|set', $field["type"]) && !ereg('^utf8', $field["collation"]) ? "CONVERT($name USING utf8)" : $name);
+                                                       $cols[] = ($jush == "sql" && $is_text && !ereg('^utf8', $field["collation"]) ? "CONVERT($name USING utf8)" : $name);
                                                }
                                        }
                                        $return[] = ($cols ? "(" . implode("$cond OR ", $cols) . "$cond)" : "0");
index fb8cd35b290b82617038e787b3d3407f14ab5221..0b66248fb67731e9fd87f61bbff8f5a2a6a4d54f 100644 (file)
@@ -798,12 +798,14 @@ function search_tables() {
                $name = $adminer->tableName($table_status);
                if (isset($table_status["Engine"]) && $name != "" && (!$_POST["tables"] || in_array($table, $_POST["tables"]))) {
                        $result = $connection->query("SELECT" . limit("1 FROM " . table($table), " WHERE " . implode(" AND ", $adminer->selectSearchProcess(fields($table), array())), 1));
-                       if ($result->fetch_row()) {
+                       if (!$result || $result->fetch_row()) {
                                if (!$found) {
                                        echo "<ul>\n";
                                        $found = true;
                                }
-                               echo "<li><a href='" . h(ME . "select=" . urlencode($table) . "&where[0][op]=" . urlencode($_GET["where"][0]["op"]) . "&where[0][val]=" . urlencode($_GET["where"][0]["val"])) . "'>$name</a>\n";
+                               echo "<li>" . ($result
+                                       ? "<a href='" . h(ME . "select=" . urlencode($table) . "&where[0][op]=" . urlencode($_GET["where"][0]["op"]) . "&where[0][val]=" . urlencode($_GET["where"][0]["val"])) . "'>$name</a>\n"
+                                       : "$name: <span class='error'>" . error() . "</span>\n");
                        }
                }
        }