aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db/mssql.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/db/mssql.php')
-rw-r--r--phpBB/includes/db/mssql.php23
1 files changed, 19 insertions, 4 deletions
diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php
index e1082d282c..5d6095e502 100644
--- a/phpBB/includes/db/mssql.php
+++ b/phpBB/includes/db/mssql.php
@@ -98,7 +98,6 @@ class dbal_mssql extends dbal
{
global $cache;
-
// EXPLAIN only in extra debug mode
if (defined('DEBUG_EXTRA'))
{
@@ -315,17 +314,33 @@ class dbal_mssql extends dbal
*/
function _sql_error()
{
-
$error = array(
'message' => @mssql_get_last_message($this->db_connect_id),
'code' => ''
);
- $result_id = @mssql_query('SELECT @@ERROR as errno', $this->db_connect_id);
+ // Get error code number
+ $result_id = @mssql_query('SELECT @@ERROR as code', $this->db_connect_id);
if ($result_id)
{
$row = @mssql_fetch_assoc($result_id);
- $error['code'] = $row['errno'];
+ $error['code'] = $row['code'];
+ @mssql_free_result($result_id);
+ }
+
+ // Get full error message if possible
+ $sql = 'SELECT CAST(description as varchar(255)) as message
+ FROM master.dbo.sysmessages
+ WHERE error = ' . $error['code'];
+ $result_id = @mssql_query($sql);
+
+ if ($result_id)
+ {
+ $row = @mssql_fetch_assoc($result_id);
+ if (!empty($row['message']))
+ {
+ $error['message'] .= '<br />' . $row['message'];
+ }
@mssql_free_result($result_id);
}