diff options
author | Andrey Andreev <narf@devilix.net> | 2015-09-16 10:29:50 +0200 |
---|---|---|
committer | Andrey Andreev <narf@devilix.net> | 2015-09-16 10:29:50 +0200 |
commit | ad4882fef8cdfb5d1795898de34440b001527d37 (patch) | |
tree | aba119b81d08469e91239ec1e8c505352c74c4c2 /system/database/drivers/mssql/mssql_driver.php | |
parent | e079203e20506397104c2caed28395ebfa8cfc70 (diff) |
Fix #4120
Diffstat (limited to 'system/database/drivers/mssql/mssql_driver.php')
-rw-r--r-- | system/database/drivers/mssql/mssql_driver.php | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php index 8f15d8d69..05e5418c3 100644 --- a/system/database/drivers/mssql/mssql_driver.php +++ b/system/database/drivers/mssql/mssql_driver.php @@ -381,9 +381,19 @@ class CI_DB_mssql_driver extends CI_DB { */ public function error() { - $query = $this->query('SELECT @@ERROR AS code'); - $query = $query->row(); - return array('code' => $query->code, 'message' => mssql_get_last_message()); + // We need this because the error info is discarded by the + // server the first time you request it, and query() already + // calls error() once for logging purposes when a query fails. + static $error = array('code' => 0, 'message' => NULL); + + $message = mssql_get_last_message(); + if ( ! empty($message)) + { + $error['code'] = $this->query('SELECT @@ERROR AS code')->row()->code; + $error['message'] = $message; + } + + return $error; } // -------------------------------------------------------------------- |