diff options
Diffstat (limited to 'phpBB/includes/db/mssqlnative.php')
| -rw-r--r-- | phpBB/includes/db/mssqlnative.php | 52 | 
1 files changed, 33 insertions, 19 deletions
| diff --git a/phpBB/includes/db/mssqlnative.php b/phpBB/includes/db/mssqlnative.php index e9191fae8a..4a969828e7 100644 --- a/phpBB/includes/db/mssqlnative.php +++ b/phpBB/includes/db/mssqlnative.php @@ -198,16 +198,18 @@ class dbal_mssqlnative extends dbal  	var $m_insert_id = NULL;  	var $last_query_text = '';  	var $query_options = array(); +	var $connect_error = '';  	/**  	* Connect to server  	*/  	function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $port = false, $persistency = false, $new_link = false)  	{ -		# Test for driver support, to avoid suppressed fatal error +		// Test for driver support, to avoid suppressed fatal error  		if (!function_exists('sqlsrv_connect'))  		{ -			trigger_error('Native MS SQL Server driver for PHP is missing or needs to be updated. Version 1.1 or later is required to install phpBB3. You can download the driver from: http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx\n', E_USER_ERROR); +			$this->connect_error = 'Native MS SQL Server driver for PHP is missing or needs to be updated. Version 1.1 or later is required to install phpBB3. You can download the driver from: http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx'; +			return $this->sql_error('');  		}  		//set up connection variables @@ -521,31 +523,43 @@ class dbal_mssqlnative extends dbal  	*/  	function _sql_error()  	{ -		$errors = @sqlsrv_errors(SQLSRV_ERR_ERRORS); -		$error_message = ''; -		$code = 0; - -		if ($errors != null) +		if (function_exists('sqlsrv_errors'))  		{ -			foreach ($errors as $error) +			$errors = @sqlsrv_errors(SQLSRV_ERR_ERRORS); +			$error_message = ''; +			$code = 0; + +			if ($errors != null) +			{ +				foreach ($errors as $error) +				{ +					$error_message .= "SQLSTATE: " . $error[ 'SQLSTATE'] . "\n"; +					$error_message .= "code: " . $error[ 'code'] . "\n"; +					$code = $error['code']; +					$error_message .= "message: " . $error[ 'message'] . "\n"; +				} +				$this->last_error_result = $error_message; +				$error = $this->last_error_result; +			} +			else  			{ -				$error_message .= "SQLSTATE: ".$error[ 'SQLSTATE']."\n"; -				$error_message .= "code: ".$error[ 'code']."\n"; -				$code = $error['code']; -				$error_message .= "message: ".$error[ 'message']."\n"; +				$error = (isset($this->last_error_result) && $this->last_error_result) ? $this->last_error_result : array();  			} -			$this->last_error_result = $error_message; -			$error = $this->last_error_result; + +			$error = array( +				'message'	=> $error, +				'code'		=> $code, +			);  		}  		else  		{ -			$error = (isset($this->last_error_result) && $this->last_error_result) ? $this->last_error_result : array(); +			$error = array( +				'message'	=> $this->connect_error, +				'code'		=> '', +			);  		} -		return array( -			'message'	=> $error, -			'code'		=> $code, -		); +		return $error;  	}  	/** | 
