select_db(DB); } $commands = 0; $errors = array(); $parse = '[\'`"]' . ($jush == "pgsql" ? '|\\$[^$]*\\$' : ($jush == "mssql" || $jush == "sqlite" ? '|\\[' : '')) . '|/\\*|-- |#'; //! ` and # not everywhere while ($query != "") { if (!$offset && $jush == "sql" && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) { $delimiter = $match[1]; $query = substr($query, strlen($match[0])); } else { preg_match('(' . preg_quote($delimiter) . "|$parse|\$)", $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match $found = $match[0][0]; $offset = $match[0][1] + strlen($found); if (!$found && $fp && !feof($fp)) { $query .= fread($fp, 1e5); } else { if (!$found && rtrim($query) == "") { break; } if ($found && $found != $delimiter) { // find matching quote or comment end while (preg_match('(' . ($found == '/*' ? '\\*/' : ($found == '[' ? ']' : (ereg('^-- |^#', $found) ? "\n" : preg_quote($found) . "|\\\\."))) . '|$)s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES $s = $match[0][0]; $offset = $match[0][1] + strlen($s); if (!$s && $fp && !feof($fp)) { $query .= fread($fp, 1e6); } elseif ($s[0] != "\\") { break; } } } else { // end of a query $empty = false; $q = substr($query, 0, $match[0][1]); $commands++; $print = "
" . shorten_utf8(trim($q), 1000) . "
\n";
if (!$_POST["only_errors"]) {
echo $print;
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 ($_POST["only_errors"] ? $print : "");
echo "" . lang('Error in query') . ": " . error() . "\n"; $errors[] = " $commands"; if ($_POST["error_stops"]) { break; } } else { if (is_object($connection2) && preg_match("~^$space*(USE)\\b~isU", $q)) { $connection2->query($q); } do { $result = $connection->store_result(); $end = explode(" ", microtime()); $time = " (" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . ")" . (strlen($q) < 1000 ? " " . lang('Edit') . "" : ""); // 1000 - maximum length of encoded URL in IE is 2083 characters if (!is_object($result)) { if (preg_match("~^$space*(CREATE|DROP|ALTER)$space+(DATABASE|SCHEMA)\\b~isU", $q)) { restart_session(); set_session("dbs", null); // clear cache session_write_close(); } if (!$_POST["only_errors"]) { echo "
" . ($result->num_rows ? lang('%d row(s)', $result->num_rows) : "") . $time; if ($connection2 && preg_match("~^($space|\\()*SELECT\\b~isU", $q)) { $id = "explain-$commands"; echo ", EXPLAIN\n"; echo "
" . lang('Error in query') . ": " . implode("", $errors) . "\n"; } //! MS SQL - SET SHOWPLAN_ALL OFF } else { echo "
" . upload_error($query) . "\n"; } } ?>