Thread: [adminer-svn] SF.net SVN: adminer:[990] trunk/adminer/sql.inc.php
Database management in a single PHP file
Brought to you by:
jakubvrana
From: <jak...@us...> - 2009-08-21 12:43:56
|
Revision: 990 http://adminer.svn.sourceforge.net/adminer/?rev=990&view=rev Author: jakubvrana Date: 2009-08-21 12:43:46 +0000 (Fri, 21 Aug 2009) Log Message: ----------- Fix long SQL query crash (bug #2839231) Fix unclosed /* infinite loop Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-08-21 10:38:49 UTC (rev 989) +++ trunk/adminer/sql.inc.php 2009-08-21 12:43:46 UTC (rev 990) @@ -28,12 +28,29 @@ if (!$offset && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) { $delimiter = $match[1]; $query = substr($query, strlen($match[0])); - } elseif (preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { - if ($match[0][0] && $match[0][0] != $delimiter) { + } else { + preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match + $found = $match[0][0]; + $offset = $match[0][1] + strlen($found); + if ($found && $found != $delimiter) { // is not end of a query - find closing part - $pattern = ($match[0][0] == "-- " || $match[0][0] == "#" ? '~.*~' : ($match[0][0] == "/*" ? '~.*\\*/~sU' : '~\\G([^\\\\' . $match[0][0] . ']|\\\\.)*(' . $match[0][0] . '|$)~sU')); //! respect sql_mode NO_BACKSLASH_ESCAPES - preg_match($pattern, $query, $match, PREG_OFFSET_CAPTURE, $match[0][1] + 1); - $offset = $match[0][1] + strlen($match[0][0]); + if (ereg('-- |#', $found)) { + $offset = strpos($query, "\n", $offset); + } elseif ($found == "/*") { + $offset = strpos($query, "*/", $offset); + } else { + // find matching quote + while (preg_match("~$found|\\\\.|\$~s", $query, $match, PREG_OFFSET_CAPTURE, $offset)) { + $s = $match[0][0]; + $offset = $match[0][1] + strlen($s); + if (!$s || $s == $found) { + break; + } + } + } + if (!$offset) { + $offset = strlen($query); + } } else { $empty = false; echo "<pre class='jush-sql'>" . shorten_utf8(trim(substr($query, 0, $match[0][1]))) . "</pre>\n"; @@ -65,7 +82,7 @@ } } while ($dbh->next_result()); } - $query = substr($query, $match[0][1] + strlen($match[0][0])); + $query = substr($query, $offset); $offset = 0; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-22 13:44:13
|
Revision: 998 http://adminer.svn.sourceforge.net/adminer/?rev=998&view=rev Author: jakubvrana Date: 2009-08-22 13:44:05 +0000 (Sat, 22 Aug 2009) Log Message: ----------- Optimize $offset Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-08-22 13:08:26 UTC (rev 997) +++ trunk/adminer/sql.inc.php 2009-08-22 13:44:05 UTC (rev 998) @@ -34,10 +34,11 @@ $offset = $match[0][1] + strlen($found); if ($found && $found != $delimiter) { // is not end of a query - find closing part - if (ereg('-- |#', $found)) { - $offset = strpos($query, "\n", $offset); - } elseif ($found == "/*") { - $offset = strpos($query, "*/", $offset); + if (ereg('/\\*|-- |#', $found)) { + $offset = strpos($query, ($found == "/*" ? "*/" : "\n"), $offset); + if (!$offset) { + $offset = strlen($query); + } } else { // find matching quote while (preg_match("~$found|\\\\.|\$~s", $query, $match, PREG_OFFSET_CAPTURE, $offset)) { @@ -48,9 +49,6 @@ } } } - if (!$offset) { - $offset = strlen($query); - } } else { $empty = false; echo "<pre class='jush-sql'>" . shorten_utf8(trim(substr($query, 0, $match[0][1]))) . "</pre>\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-30 15:05:58
|
Revision: 1155 http://adminer.svn.sourceforge.net/adminer/?rev=1155&view=rev Author: jakubvrana Date: 2009-09-30 15:05:46 +0000 (Wed, 30 Sep 2009) Log Message: ----------- Comment Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-09-28 08:19:06 UTC (rev 1154) +++ trunk/adminer/sql.inc.php 2009-09-30 15:05:46 UTC (rev 1155) @@ -118,7 +118,7 @@ <form action="" method="post" enctype="multipart/form-data"> <p><textarea name="query" rows="20" cols="80" style="width: 98%;"><?php -$q = $_GET["sql"]; +$q = $_GET["sql"]; // overwrite $q from if ($_POST) to save memory if ($_POST) { $q = $_POST["query"]; } elseif (strlen($_GET["history"])) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-02-09 09:16:21
|
Revision: 1303 http://adminer.svn.sourceforge.net/adminer/?rev=1303&view=rev Author: jakubvrana Date: 2010-02-09 09:16:15 +0000 (Tue, 09 Feb 2010) Log Message: ----------- PHP 4 compatibility (bug #2948187) Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2010-02-03 15:30:52 UTC (rev 1302) +++ trunk/adminer/sql.inc.php 2010-02-09 09:16:15 UTC (rev 1303) @@ -148,8 +148,8 @@ <p><?php $compress = array(); -foreach (array("gz" => "zlib", "bz2" => "bzip2") as $key => $val) { - if (in_array("compress.$val", stream_get_wrappers())) { +foreach (array("gz" => "zlib", "bz2" => "bz2") as $key => $val) { + if (extension_loaded($val)) { $compress[] = ".$key"; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-26 11:23:39
|
Revision: 1017 http://adminer.svn.sourceforge.net/adminer/?rev=1017&view=rev Author: jakubvrana Date: 2009-08-26 11:23:31 +0000 (Wed, 26 Aug 2009) Log Message: ----------- \r can be part of a query Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-08-25 16:29:59 UTC (rev 1016) +++ trunk/adminer/sql.inc.php 2009-08-26 11:23:31 UTC (rev 1017) @@ -9,8 +9,7 @@ if (!$error && $_POST) { $query = ($_POST["webfile"] ? @file_get_contents("adminer.sql") : ($_POST["file"] ? get_file("sql_file") : $_POST["query"])); - if (is_string($query)) { // get_file() returns error as number - $query = str_replace("\r", "", $query); // parser looks for \n + if (is_string($query)) { // get_file() returns error as number, file_get_contents as false $query = rtrim($query); if (strlen($query) && (!$history || end($history) != $query)) { // don't add repeated $history[] = $query; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-26 14:27:20
|
Revision: 1024 http://adminer.svn.sourceforge.net/adminer/?rev=1024&view=rev Author: jakubvrana Date: 2009-08-26 14:27:12 +0000 (Wed, 26 Aug 2009) Log Message: ----------- Unlock session if possible Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-08-26 14:14:38 UTC (rev 1023) +++ trunk/adminer/sql.inc.php 2009-08-26 14:27:12 UTC (rev 1024) @@ -15,13 +15,18 @@ $query = get_file("sql_file"); } if (is_string($query)) { // get_file() returns error as number, file_get_contents as false + $space = "(\\s|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)"; + $alter_database = "(CREATE|DROP)$space+(DATABASE|SCHEMA)\\b~isU"; + $databases = &$_SESSION["databases"][$_GET["server"]]; + if (isset($databases) && !preg_match("~\\b$alter_database", $query)) { // quick check - may be inside string + session_write_close(); + } if (strlen($query) && (!$history || end($history) != $query)) { // don't add repeated $history[] = $query; } $delimiter = ";"; $offset = 0; $empty = true; - $space = "(\\s|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)"; $dbh2 = (strlen($_GET["db"]) ? connect() : null); // connection for exploring indexes (to not replace FOUND_ROWS()) //! PDO - silent error if (is_object($dbh2)) { $dbh2->select_db($_GET["db"]); @@ -61,8 +66,8 @@ if (is_object($result)) { select($result, $dbh2); } else { - if (preg_match("~^$space*(CREATE|DROP)$space+(DATABASE|SCHEMA)\\b~isU", $query)) { - unset($_SESSION["databases"][$_GET["server"]]); // clear cache + if (preg_match("~^$space*$alter_database", $query)) { + $databases = null; // clear cache } echo "<p class='message'>" . lang('Query executed OK, %d row(s) affected.', $dbh->affected_rows) . "\n"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-09 15:51:37
|
Revision: 1076 http://adminer.svn.sourceforge.net/adminer/?rev=1076&view=rev Author: jakubvrana Date: 2009-09-09 15:51:26 +0000 (Wed, 09 Sep 2009) Log Message: ----------- Save to history before session close Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-09-09 11:03:03 UTC (rev 1075) +++ trunk/adminer/sql.inc.php 2009-09-09 15:51:26 UTC (rev 1076) @@ -23,13 +23,13 @@ $space = "(\\s|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)"; $alter_database = "(CREATE|DROP)$space+(DATABASE|SCHEMA)\\b~isU"; $databases = &$_SESSION["databases"][$_GET["server"]]; + if (!$fp && strlen($query) && (!$history || end($history) != $query)) { // don't add repeated + $history[] = $query; + } if (isset($databases) && !preg_match("~\\b$alter_database", $query)) { // quick check - may be inside string //! false positive with $fp session_write_close(); } - if (!$fp && strlen($query) && (!$history || end($history) != $query)) { // don't add repeated - $history[] = $query; - } $delimiter = ";"; $offset = 0; $empty = true; @@ -109,7 +109,7 @@ ?> <form action="" method="post" enctype="multipart/form-data"> -<p><textarea name="query" rows="20" cols="80" style="width: 98%;"><?php echo h($_POST ? $_POST["query"] : (strlen($_GET["history"]) ? $_SESSION["history"][$_GET["server"]][DB][$_GET["history"]] : $_GET["sql"])); ?></textarea> +<p><textarea name="query" rows="20" cols="80" style="width: 98%;"><?php echo h($_POST ? $_POST["query"] : (strlen($_GET["history"]) ? $history[$_GET["history"]] : $_GET["sql"])); ?></textarea> <p> <input type="hidden" name="token" value="<?php echo $token; ?>"> <input type="submit" value="<?php echo lang('Execute'); ?>"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-11 11:57:26
|
Revision: 1087 http://adminer.svn.sourceforge.net/adminer/?rev=1087&view=rev Author: jakubvrana Date: 2009-09-11 11:57:20 +0000 (Fri, 11 Sep 2009) Log Message: ----------- End styled element for IE Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-09-10 19:05:27 UTC (rev 1086) +++ trunk/adminer/sql.inc.php 2009-09-11 11:57:20 UTC (rev 1087) @@ -69,7 +69,7 @@ do { $result = $dbh->store_result(); if (!$i) { - echo "<p class='time'>" . (is_object($result) ? lang('%d row(s)', $result->num_rows) . ", ": "") . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "\n"; + echo "<p class='time'>" . (is_object($result) ? lang('%d row(s)', $result->num_rows) . ", ": "") . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "</p>\n"; // </p> required by IE $i++; } if (is_object($result)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-12 12:57:08
|
Revision: 1102 http://adminer.svn.sourceforge.net/adminer/?rev=1102&view=rev Author: jakubvrana Date: 2009-09-12 12:57:02 +0000 (Sat, 12 Sep 2009) Log Message: ----------- Check $dbh2 Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-09-12 04:44:37 UTC (rev 1101) +++ trunk/adminer/sql.inc.php 2009-09-12 12:57:02 UTC (rev 1102) @@ -72,11 +72,12 @@ $result = $dbh->store_result(); if (is_object($result)) { select($result, $dbh2); - if (preg_match("~^$space*SELECT$space+~isU", $q)) { + echo "<p>" . lang('%d row(s)', $result->num_rows); + if ($dbh2 && preg_match("~^$space*SELECT$space+~isU", $q)) { $id = "explain-$explain"; - echo "<p>" . lang('%d row(s)', $result->num_rows) . ", <a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>\n"; + echo ", <a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>\n"; echo "<div id='$id' class='hidden'>\n"; - select($dbh2->query("EXPLAIN $q")); + select($dbh2->query("EXPLAIN $q"), $dbh2); echo "</div>\n"; $explain++; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-24 10:07:31
|
Revision: 1139 http://adminer.svn.sourceforge.net/adminer/?rev=1139&view=rev Author: jakubvrana Date: 2009-09-24 10:07:25 +0000 (Thu, 24 Sep 2009) Log Message: ----------- Prolong printed SQL query Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-09-24 10:07:06 UTC (rev 1138) +++ trunk/adminer/sql.inc.php 2009-09-24 10:07:25 UTC (rev 1139) @@ -55,7 +55,7 @@ if (!$found || $found == $delimiter) { // end of a query $empty = false; $q = substr($query, 0, $match[0][1]); - echo "<pre class='jush-sql'>" . shorten_utf8(trim($q)) . "</pre>\n"; + echo "<pre class='jush-sql'>" . shorten_utf8(trim($q), 1000) . "</pre>\n"; ob_flush(); flush(); // can take a long time - show the running query $start = explode(" ", microtime()); // microtime(true) is available since PHP 5 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-24 14:17:34
|
Revision: 1142 http://adminer.svn.sourceforge.net/adminer/?rev=1142&view=rev Author: jakubvrana Date: 2009-09-24 14:17:26 +0000 (Thu, 24 Sep 2009) Log Message: ----------- Set memory_limit (thanks to kahi) Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-09-24 14:16:47 UTC (rev 1141) +++ trunk/adminer/sql.inc.php 2009-09-24 14:17:26 UTC (rev 1142) @@ -20,7 +20,8 @@ $query = get_file("sql_file", true); } if (is_string($query)) { // get_file() returns error as number, fread() as false - if (!$fp && strlen($query) && (!$history || end($history) != $query)) { // don't add repeated + @ini_set("memory_limit", 2 * strlen($query) + memory_get_usage() + 2e6); // @ - may be disabled, 2 - substr and trim, 2e6 - other variables + if (strlen($query) && strlen($query) < 1e6 && (!$history || end($history) != $query)) { // don't add repeated and big queries $history[] = $query; } $space = "(\\s|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)"; @@ -116,7 +117,15 @@ ?> <form action="" method="post" enctype="multipart/form-data"> -<p><textarea name="query" rows="20" cols="80" style="width: 98%;"><?php echo h($_POST ? $_POST["query"] : (strlen($_GET["history"]) ? $history[$_GET["history"]] : $_GET["sql"])); ?></textarea> +<p><textarea name="query" rows="20" cols="80" style="width: 98%;"><?php +$q = $_GET["sql"]; +if ($_POST) { + $q = $_POST["query"]; +} elseif (strlen($_GET["history"])) { + $q = $history[$_GET["history"]]; +} +echo h($q); +?></textarea> <p> <input type="hidden" name="token" value="<?php echo $token; ?>"> <input type="submit" value="<?php echo lang('Execute'); ?>"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-27 07:27:23
|
Revision: 1153 http://adminer.svn.sourceforge.net/adminer/?rev=1153&view=rev Author: jakubvrana Date: 2009-09-27 07:27:16 +0000 (Sun, 27 Sep 2009) Log Message: ----------- Declare support for adminer.sql.gz Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-09-26 16:59:40 UTC (rev 1152) +++ trunk/adminer/sql.inc.php 2009-09-27 07:27:16 UTC (rev 1153) @@ -140,7 +140,15 @@ <input type="submit" name="file" value="<?php echo lang('Run file'); ?>"> <?php } ?> -<p><?php echo lang('Webserver file %s', '<code>adminer.sql</code>'); ?> <input type="submit" name="webfile" value="<?php echo lang('Run file'); ?>"> +<p><?php +$compress = array(); +foreach (array("gz" => "zlib", "bz2" => "bzip2") as $key => $val) { + if (in_array("compress.$val", stream_get_wrappers())) { + $compress[] = ".$key"; + } +} +echo lang('Webserver file %s', "<code>adminer.sql" . ($compress ? "[" . implode("|", $compress) . "]" : "") . "</code>"); +?> <input type="submit" name="webfile" value="<?php echo lang('Run file'); ?>"> <?php if ($history) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-10-01 10:02:35
|
Revision: 1157 http://adminer.svn.sourceforge.net/adminer/?rev=1157&view=rev Author: jakubvrana Date: 2009-10-01 10:02:11 +0000 (Thu, 01 Oct 2009) Log Message: ----------- Display number of rows only for select Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-09-30 15:10:21 UTC (rev 1156) +++ trunk/adminer/sql.inc.php 2009-10-01 10:02:11 UTC (rev 1157) @@ -73,9 +73,9 @@ $result = $connection->store_result(); if (is_object($result)) { select($result, $connection2); - echo "<p>" . lang('%d row(s)', $result->num_rows); if ($connection2 && preg_match("~^$space*SELECT$space+~isU", $q)) { $id = "explain-$explain"; + echo "<p>" . lang('%d row(s)', $result->num_rows); echo ", <a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>\n"; echo "<div id='$id' class='hidden'>\n"; select($connection2->query("EXPLAIN $q"), $connection2); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-10-10 17:03:26
|
Revision: 1181 http://adminer.svn.sourceforge.net/adminer/?rev=1181&view=rev Author: jakubvrana Date: 2009-10-10 17:03:19 +0000 (Sat, 10 Oct 2009) Log Message: ----------- Don't duplicate no rows Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-10-09 16:19:40 UTC (rev 1180) +++ trunk/adminer/sql.inc.php 2009-10-10 17:03:19 UTC (rev 1181) @@ -75,8 +75,8 @@ select($result, $connection2); if ($connection2 && preg_match("~^$space*SELECT$space+~isU", $q)) { $id = "explain-$explain"; - echo "<p>" . lang('%d row(s)', $result->num_rows); - echo ", <a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>\n"; + echo "<p>" . ($result->num_rows ? lang('%d row(s)', $result->num_rows) . ", " : ""); + echo "<a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>\n"; echo "<div id='$id' class='hidden'>\n"; select($connection2->query("EXPLAIN $q"), $connection2); echo "</div>\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-10-12 11:19:31
|
Revision: 1183 http://adminer.svn.sourceforge.net/adminer/?rev=1183&view=rev Author: jakubvrana Date: 2009-10-12 11:19:25 +0000 (Mon, 12 Oct 2009) Log Message: ----------- Increase memory_limit Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-10-10 21:33:22 UTC (rev 1182) +++ trunk/adminer/sql.inc.php 2009-10-12 11:19:25 UTC (rev 1183) @@ -20,7 +20,7 @@ $query = get_file("sql_file", true); } if (is_string($query)) { // get_file() returns error as number, fread() as false - @ini_set("memory_limit", 2 * strlen($query) + memory_get_usage() + 2e6); // @ - may be disabled, 2 - substr and trim, 2e6 - other variables + @ini_set("memory_limit", 2 * strlen($query) + memory_get_usage() + 8e6); // @ - may be disabled, 2 - substr and trim, 8e6 - other variables if (strlen($query) && strlen($query) < 1e6 && (!$history || end($history) != $query)) { // don't add repeated and big queries $history[] = $query; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-12-16 13:10:35
|
Revision: 1270 http://adminer.svn.sourceforge.net/adminer/?rev=1270&view=rev Author: jakubvrana Date: 2009-12-16 13:10:28 +0000 (Wed, 16 Dec 2009) Log Message: ----------- Simplify syntax errors Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-12-16 13:05:22 UTC (rev 1269) +++ trunk/adminer/sql.inc.php 2009-12-16 13:10:28 UTC (rev 1270) @@ -63,7 +63,7 @@ $start = explode(" ", microtime()); // microtime(true) is available since PHP 5 //! don't allow changing of character_set_results, convert encoding of displayed query if (!$connection->multi_query($q)) { - echo "<p class='error'>" . lang('Error in query') . ": " . h($connection->error) . "\n"; + echo "<p class='error'>" . lang('Error in query') . ": " . h(preg_replace('~^You have an error.*syntax to use~U', "Syntax error", $connection->error)) . "\n"; if ($_POST["error_stops"]) { break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-12-29 11:27:43
|
Revision: 1284 http://adminer.svn.sourceforge.net/adminer/?rev=1284&view=rev Author: jakubvrana Date: 2009-12-29 11:27:33 +0000 (Tue, 29 Dec 2009) Log Message: ----------- Move query info to title Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-12-18 17:59:58 UTC (rev 1283) +++ trunk/adminer/sql.inc.php 2009-12-29 11:27:33 UTC (rev 1284) @@ -87,7 +87,7 @@ if (preg_match("~^$space*$alter_database", $query)) { $databases = null; // clear cache } - echo "<p class='message'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "<br>" . h($connection->info) . "\n"; + echo "<p class='message' title='" . h($connection->info) . "'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "\n"; } unset($result); // free resultset } while ($connection->next_result()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-02-03 11:07:10
|
Revision: 1301 http://adminer.svn.sourceforge.net/adminer/?rev=1301&view=rev Author: jakubvrana Date: 2010-02-03 11:07:00 +0000 (Wed, 03 Feb 2010) Log Message: ----------- Errors summary Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2010-01-28 15:17:20 UTC (rev 1300) +++ trunk/adminer/sql.inc.php 2010-02-03 11:07:00 UTC (rev 1301) @@ -39,7 +39,8 @@ if (is_object($connection2)) { $connection2->select_db(DB); } - $explain = 1; + $queries = 0; + $errors = ""; while ($query != "") { if (!$offset && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) { $delimiter = $match[1]; @@ -57,13 +58,15 @@ if (!$found || $found == $delimiter) { // end of a query $empty = false; $q = substr($query, 0, $match[0][1]); - echo "<pre class='jush-sql'>" . shorten_utf8(trim($q), 1000) . "</pre>\n"; + $queries++; + echo "<pre class='jush-sql' id='sql-$queries'>" . shorten_utf8(trim($q), 1000) . "</pre>\n"; ob_flush(); flush(); // can take a long time - show the running query $start = explode(" ", microtime()); // microtime(true) is available since PHP 5 //! don't allow changing of character_set_results, convert encoding of displayed query if (!$connection->multi_query($q)) { echo "<p class='error'>" . lang('Error in query') . ": " . error() . "\n"; + $errors .= " <a href='#sql-$queries'>$queries</a>"; if ($_POST["error_stops"]) { break; } @@ -75,13 +78,12 @@ if (is_object($result)) { select($result, $connection2); if ($connection2 && preg_match("~^($space|\\()*SELECT\\b~isU", $q)) { - $id = "explain-$explain"; + $id = "explain-$queries"; echo "<p>" . ($result->num_rows ? lang('%d row(s)', $result->num_rows) . ", " : ""); echo "<a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>\n"; echo "<div id='$id' class='hidden'>\n"; select($connection2->query("EXPLAIN $q")); echo "</div>\n"; - $explain++; } } else { if (preg_match("~^$space*$alter_database", $query)) { @@ -108,6 +110,9 @@ } } } + if ($errors && $queries > 1) { + echo "<p class='error'>" . lang('Error in query') . ": $errors\n"; + } if ($empty) { echo "<p class='message'>" . lang('No commands to execute.') . "\n"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-02-15 13:42:18
|
Revision: 1309 http://adminer.svn.sourceforge.net/adminer/?rev=1309&view=rev Author: jakubvrana Date: 2010-02-15 13:42:12 +0000 (Mon, 15 Feb 2010) Log Message: ----------- Collapse history Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2010-02-12 21:30:36 UTC (rev 1308) +++ trunk/adminer/sql.inc.php 2010-02-15 13:42:12 UTC (rev 1309) @@ -158,13 +158,13 @@ <?php if ($history) { - echo "<fieldset><legend>" . lang('History') . "</legend>\n"; + print_fieldset("history", lang('History'), $_GET["history"] != ""); foreach ($history as $key => $val) { //! save and display timestamp echo '<a href="' . h(ME . "sql=&history=$key") . '">' . lang('Edit') . '</a> <code class="jush-sql">' . shorten_utf8(ltrim(str_replace("\n", " ", str_replace("\r", "", preg_replace('~^(#|-- ).*~m', '', $val)))), 80, "</code>") . "<br>\n"; } echo "<input type='submit' name='clear' value='" . lang('Clear') . "'>\n"; - echo "</fieldset>\n"; + echo "</div></fieldset>\n"; } ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-02-18 14:57:22
|
Revision: 1318 http://adminer.svn.sourceforge.net/adminer/?rev=1318&view=rev Author: jakubvrana Date: 2010-02-18 14:57:16 +0000 (Thu, 18 Feb 2010) Log Message: ----------- Clear cache by CREATE DATABASE (bug #2952276) Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2010-02-17 16:49:43 UTC (rev 1317) +++ trunk/adminer/sql.inc.php 2010-02-18 14:57:16 UTC (rev 1318) @@ -27,9 +27,7 @@ } $space = "(\\s|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)"; $alter_database = "(CREATE|DROP)$space+(DATABASE|SCHEMA)\\b~isU"; - $databases = &$_SESSION["databases"][$_GET["server"]]; - if (!ini_get("session.use_cookies") || (isset($databases) && !preg_match("~\\b$alter_database", $query))) { // quick check - may be inside string - //! false positive with $fp and disabled ini_set() and enabled session.use_cookies + if (!ini_get("session.use_cookies")) { session_write_close(); } $delimiter = ";"; @@ -87,7 +85,9 @@ } } else { if (preg_match("~^$space*$alter_database", $query)) { - $databases = null; // clear cache + restart_session(); + $_SESSION["databases"][$_GET["server"]] = null; // clear cache + session_write_close(); } echo "<p class='message' title='" . h($connection->info) . "'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "\n"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-02-24 21:00:42
|
Revision: 1331 http://adminer.svn.sourceforge.net/adminer/?rev=1331&view=rev Author: jakubvrana Date: 2010-02-24 21:00:36 +0000 (Wed, 24 Feb 2010) Log Message: ----------- Check memory_get_usage availability (bug #2957708) Modified Paths: -------------- trunk/adminer/sql.inc.php Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2010-02-24 21:00:13 UTC (rev 1330) +++ trunk/adminer/sql.inc.php 2010-02-24 21:00:36 UTC (rev 1331) @@ -21,7 +21,9 @@ $query = get_file("sql_file", true); } if (is_string($query)) { // get_file() returns error as number, fread() as false - @ini_set("memory_limit", 2 * strlen($query) + memory_get_usage() + 8e6); // @ - may be disabled, 2 - substr and trim, 8e6 - other variables + if (function_exists('memory_get_usage')) { + @ini_set("memory_limit", 2 * strlen($query) + memory_get_usage() + 8e6); // @ - may be disabled, 2 - substr and trim, 8e6 - other variables + } if ($query != "" && strlen($query) < 1e6 && (!$history || end($history) != $query)) { // don't add repeated and big queries $history[] = $query; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |