From 4bee1c0f30e02c2400dfa3598e5a503c182f00bf Mon Sep 17 00:00:00 2001 From: jakubvrana Date: Tue, 30 Sep 2008 12:22:24 +0000 Subject: [PATCH] Upload error only if not other error git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@507 7c3ca157-0c34-0410-bff1-cbf682f78f5c --- sql.inc.php | 74 +++++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/sql.inc.php b/sql.inc.php index e75c8983..40e371cb 100644 --- a/sql.inc.php +++ b/sql.inc.php @@ -5,48 +5,50 @@ if (isset($_POST["query"])) { } page_header(lang('SQL command'), $error); -if (!$error && $_POST && is_string($query = (isset($_POST["query"]) ? $_POST["query"] : get_file("sql_file")))) { - $delimiter = ";"; - $offset = 0; - $empty = true; - while (rtrim($query)) { - if (!$offset && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) { - $delimiter = preg_quote($match[1], '~'); - $query = substr($query, strlen($match[0])); - } elseif (preg_match("~$delimiter|['`\"]|/\\*|-- |#|\$~", $query, $match, PREG_OFFSET_CAPTURE, $offset)) { - if ($match[0][0] && $match[0][0] != $delimiter) { - $pattern = ($match[0][0] == "-- " || $match[0][0] == "#" ? '~.*~' : ($match[0][0] == "/*" ? '~.*\\*/~sU' : '~\\G([^\\\\' . $match[0][0] . ']+|\\\\.)*(' . $match[0][0] . '|$)~s')); - preg_match($pattern, $query, $match, PREG_OFFSET_CAPTURE, $match[0][1] + 1); - $offset = $match[0][1] + strlen($match[0][0]); - } else { - $empty = false; - echo "
" . htmlspecialchars(substr($query, 0, $match[0][1])) . "
\n"; - //! don't allow changing of character_set_results, convert encoding of displayed query - if (!$mysql->multi_query(substr($query, 0, $match[0][1]))) { - echo "

" . lang('Error in query') . ": " . htmlspecialchars($mysql->error) . "

\n"; +if (!$error && $_POST) { + if (is_string($query = (isset($_POST["query"]) ? $_POST["query"] : get_file("sql_file")))) { + $delimiter = ";"; + $offset = 0; + $empty = true; + while (rtrim($query)) { + if (!$offset && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) { + $delimiter = preg_quote($match[1], '~'); + $query = substr($query, strlen($match[0])); + } elseif (preg_match("~$delimiter|['`\"]|/\\*|-- |#|\$~", $query, $match, PREG_OFFSET_CAPTURE, $offset)) { + if ($match[0][0] && $match[0][0] != $delimiter) { + $pattern = ($match[0][0] == "-- " || $match[0][0] == "#" ? '~.*~' : ($match[0][0] == "/*" ? '~.*\\*/~sU' : '~\\G([^\\\\' . $match[0][0] . ']+|\\\\.)*(' . $match[0][0] . '|$)~s')); + preg_match($pattern, $query, $match, PREG_OFFSET_CAPTURE, $match[0][1] + 1); + $offset = $match[0][1] + strlen($match[0][0]); } else { - do { - $result = $mysql->store_result(); - if (is_object($result)) { - select($result); - } else { - if (preg_match("~^\\s*(CREATE|DROP)(\\s+|/\\*.*\\*/|(#|-- )[^\n]*\n)+(DATABASE|SCHEMA)\\b~isU", $query)) { - unset($_SESSION["databases"][$_GET["server"]]); + $empty = false; + echo "
" . htmlspecialchars(substr($query, 0, $match[0][1])) . "
\n"; + //! don't allow changing of character_set_results, convert encoding of displayed query + if (!$mysql->multi_query(substr($query, 0, $match[0][1]))) { + echo "

" . lang('Error in query') . ": " . htmlspecialchars($mysql->error) . "

\n"; + } else { + do { + $result = $mysql->store_result(); + if (is_object($result)) { + select($result); + } else { + if (preg_match("~^\\s*(CREATE|DROP)(\\s+|/\\*.*\\*/|(#|-- )[^\n]*\n)+(DATABASE|SCHEMA)\\b~isU", $query)) { + unset($_SESSION["databases"][$_GET["server"]]); + } + echo "

" . lang('Query executed OK, %d row(s) affected.', $mysql->affected_rows) . "

\n"; } - echo "

" . lang('Query executed OK, %d row(s) affected.', $mysql->affected_rows) . "

\n"; - } - } while ($mysql->next_result()); + } while ($mysql->next_result()); + } + $query = substr($query, $match[0][1] + strlen($match[0][0])); + $offset = 0; } - $query = substr($query, $match[0][1] + strlen($match[0][0])); - $offset = 0; } } + if ($empty) { + echo "

" . lang('No commands to execute.') . "

\n"; + } + } else { + echo "

" . lang('Unable to upload a file.') . "

\n"; } - if ($empty) { - echo "

" . lang('No commands to execute.') . "

\n"; - } -} elseif ($_POST) { - echo "

" . lang('Unable to upload a file.') . "

\n"; } ?>