From d79b160dd1f9cb08a2011b5610f45107fdb8455b Mon Sep 17 00:00:00 2001 From: jakubvrana Date: Fri, 15 Jan 2010 13:58:29 +0000 Subject: [PATCH] Illegal mix of collations git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1297 7c3ca157-0c34-0410-bff1-cbf682f78f5c --- adminer/include/adminer.inc.php | 5 +++-- editor/include/adminer.inc.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index d382e839..c19ab338 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -323,10 +323,11 @@ class Adminer { $cols = array(); foreach ($fields as $name => $field) { if (is_numeric($val["val"]) || !ereg('int|float|double|decimal', $field["type"])) { - $cols[] = $name; + $name = idf_escape($name); + $cols[] = (ereg('char|text|enum|set', $field["type"]) && !ereg('^utf8', $field["collation"]) ? "CONVERT($name USING utf8)" : $name); } } - $return[] = ($cols ? "(" . implode("$cond OR ", array_map('idf_escape', $cols)) . "$cond)" : "0"); + $return[] = ($cols ? "(" . implode("$cond OR ", $cols) . "$cond)" : "0"); } } } diff --git a/editor/include/adminer.inc.php b/editor/include/adminer.inc.php index e65b799a..568c2fb5 100644 --- a/editor/include/adminer.inc.php +++ b/editor/include/adminer.inc.php @@ -281,7 +281,7 @@ ORDER BY ORDINAL_POSITION"); if ($col != "" || is_numeric($val["val"]) || !ereg('int|float|double|decimal', $field["type"])) { $text_type = ereg('char|text|enum|set', $field["type"]); $value = $this->processInput($field, ($text_type && ereg('^[^%]+$', $val["val"]) ? "%$val[val]%" : $val["val"])); - $conds[] = idf_escape($name) . ($value == "NULL" ? " IS" . ($val["op"] == ">=" ? " NOT" : "") : (in_array($val["op"], $this->operators) ? " $val[op]" : ($val["op"] != "=" && $text_type ? " LIKE" : " ="))) . " $value"; + $conds[] = idf_escape($name) . ($value == "NULL" ? " IS" . ($val["op"] == ">=" ? " NOT" : "") : (in_array($val["op"], $this->operators) ? " $val[op]" : ($val["op"] != "=" && $text_type ? " LIKE" : " ="))) . " $value"; //! can issue "Illegal mix of collations" for columns in other character sets - solve by CONVERT($name using utf8) } } $return[] = ($conds ? "(" . implode(" OR ", $conds) . ")" : "0");