diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index a3dd2ef3..2cb57194 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -59,7 +59,7 @@ function adminer_table_name($table_status) { * @return string */ function adminer_field_name($field) { - return call_adminer('field_name', ($field ? '' . htmlspecialchars($field["field"]) . '' : "*"), $field); + return call_adminer('field_name', '' . htmlspecialchars($field["field"]) . '', $field); } /** Links after select heading diff --git a/adminer/select.inc.php b/adminer/select.inc.php index af1b09dc..1db65ae2 100644 --- a/adminer/select.inc.php +++ b/adminer/select.inc.php @@ -31,11 +31,18 @@ foreach ($fields as $key => $field) { $rights += $field["privileges"]; } +function apply_sql_function($function, $column) { + return ($function + ? ($function == "distinct" ? "COUNT(DISTINCT " : strtoupper("$function(") . "$column)") + : $column + ); +} + $select = array(); // select expressions, empty for * $group = array(); // expressions without aggregation - will be used for GROUP BY if an aggregation function is used foreach ((array) $_GET["columns"] as $key => $val) { if ($val["fun"] == "count" || (isset($columns[$val["col"]]) && (!$val["fun"] || in_array($val["fun"], $functions) || in_array($val["fun"], $grouping)))) { - $select[$key] = (isset($columns[$val["col"]]) ? ($val["fun"] ? ($val["fun"] == "distinct" ? "COUNT(DISTINCT " : strtoupper("$val[fun](")) . idf_escape($val["col"]) . ")" : idf_escape($val["col"])) : "COUNT(*)"); + $select[$key] = apply_sql_function($val["fun"], (isset($columns[$val["col"]]) ? idf_escape($val["col"]) : "*")); if (!in_array($val["fun"], $grouping)) { $group[] = $select[$key]; } @@ -292,10 +299,11 @@ if (!$columns) { reset($select); foreach ($rows[0] as $key => $val) { $val = $_GET["columns"][key($select)]; - $name = adminer_field_name($fields[$select ? $val["col"] : $key]); + $field = $fields[$select ? $val["col"] : $key]; + $name = ($field ? adminer_field_name($field) : "*"); if (strlen($name)) { $names[$key] = $name; - echo '' . ($val["fun"] ? strtoupper($val["fun"]) . " $name" : $name) . ""; + echo '' . apply_sql_function($val["fun"], $name) . ""; } next($select); } diff --git a/editor/include/adminer.inc.php b/editor/include/adminer.inc.php index acce9c70..063791d4 100644 --- a/editor/include/adminer.inc.php +++ b/editor/include/adminer.inc.php @@ -33,7 +33,7 @@ function adminer_table_name($table_status) { } function adminer_field_name($field) { - return call_adminer('field_name', ($field ? htmlspecialchars(strlen($field["comment"]) ? $field["comment"] : $field["field"]) : "*"), $field); + return call_adminer('field_name', htmlspecialchars(strlen($field["comment"]) ? $field["comment"] : $field["field"]), $field); } function adminer_select_links($table_status) {