diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index e13a49eb..bada009c 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -12,11 +12,12 @@ if (isset($_GET["mssql"])) { define("DRIVER", "mssql"); if (extension_loaded("sqlsrv")) { class Min_DB { - var $extension = "sqlsrv", $_link, $_result, $server_info, $affected_rows, $error; + var $extension = "sqlsrv", $_link, $_result, $server_info, $affected_rows, $errno, $error; function _get_error() { $this->error = ""; foreach (sqlsrv_errors() as $error) { + $this->errno = $error["code"]; $this->error .= "$error[message]\n"; } $this->error = rtrim($this->error); diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index 066fef70..9f6392a8 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -54,6 +54,7 @@ if (!defined("DRIVER")) { $extension = "MySQL", ///< @var string extension name $server_info, ///< @var string server version $affected_rows, ///< @var int number of affected rows + $errno, ///< @var int last error code $error, ///< @var string last error message $_link, $_result ///< @access private ; @@ -110,6 +111,7 @@ if (!defined("DRIVER")) { $result = @($unbuffered ? mysql_unbuffered_query($query, $this->_link) : mysql_query($query, $this->_link)); // @ - mute mysql.trace_mode $this->error = ""; if (!$result) { + $this->errrno = mysql_errno($this->_link); $this->error = mysql_error($this->_link); return false; } diff --git a/adminer/drivers/oracle.inc.php b/adminer/drivers/oracle.inc.php index c32f2b44..85f0089c 100644 --- a/adminer/drivers/oracle.inc.php +++ b/adminer/drivers/oracle.inc.php @@ -6,7 +6,7 @@ if (isset($_GET["oracle"])) { define("DRIVER", "oracle"); if (extension_loaded("oci8")) { class Min_DB { - var $extension = "oci8", $_link, $_result, $server_info, $affected_rows, $error; + var $extension = "oci8", $_link, $_result, $server_info, $affected_rows, $errno, $error; function _error($errno, $error) { if (ini_bool("html_errors")) { @@ -40,6 +40,7 @@ if (isset($_GET["oracle"])) { $this->error = ""; if (!$result) { $error = oci_error($this->_link); + $this->errno = $error["code"]; $this->error = $error["message"]; return false; } diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index 769322b4..dc8092dc 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -9,7 +9,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) { if (isset($_GET["sqlite"])) { class Min_SQLite { - var $extension = "SQLite3", $server_info, $affected_rows, $error, $_link; + var $extension = "SQLite3", $server_info, $affected_rows, $errno, $error, $_link; function Min_SQLite($filename) { $this->_link = new SQLite3($filename); @@ -21,6 +21,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) { $result = @$this->_link->query($query); $this->error = ""; if (!$result) { + $this->errno = $this->_link->lastErrorCode(); $this->error = $this->_link->lastErrorMsg(); return false; } elseif ($result->numColumns()) { diff --git a/adminer/include/pdo.inc.php b/adminer/include/pdo.inc.php index b72d68f9..ebe7c34d 100644 --- a/adminer/include/pdo.inc.php +++ b/adminer/include/pdo.inc.php @@ -2,7 +2,7 @@ // PDO can be used in several database drivers if (extension_loaded('pdo')) { /*abstract*/ class Min_PDO extends PDO { - var $_result, $server_info, $affected_rows, $error; + var $_result, $server_info, $affected_rows, $errno, $error; function __construct() { global $adminer; @@ -26,8 +26,7 @@ if (extension_loaded('pdo')) { $result = parent::query($query); $this->error = ""; if (!$result) { - $errorInfo = $this->errorInfo(); - $this->error = $errorInfo[2]; + list(, $this->errno, $this->error) = $this->errorInfo(); return false; } $this->store_result($result); diff --git a/adminer/sql.inc.php b/adminer/sql.inc.php index 1768ded1..b93f9a1e 100644 --- a/adminer/sql.inc.php +++ b/adminer/sql.inc.php @@ -104,7 +104,7 @@ if (!$error && $_POST) { $time = format_time($start, $end) . (strlen($q) < 1000 ? " " . lang('Edit') . "" : ""); // 1000 - maximum length of encoded URL in IE is 2083 characters if ($connection->error) { echo ($_POST["only_errors"] ? $print : ""); - echo "

" . lang('Error in query') . ": " . error() . "\n"; + echo "

" . lang('Error in query') . ($connection->errno ? " ($connection->errno)" : "") . ": " . error() . "\n"; $errors[] = " $commands"; if ($_POST["error_stops"]) { break 2; diff --git a/changes.txt b/changes.txt index 38fd9a5c..2420cd76 100644 --- a/changes.txt +++ b/changes.txt @@ -1,4 +1,5 @@ Adminer 3.6.3-dev: +Display error code in SQL query Treat Meta key same as Ctrl Don't use type="number" for decimal numbers