Hi,
I fixed the issues in the subject line. Note that the change to DB_driver.php is required so that the call to _error_number() does not screw up the _error_message() result. Here is the patch:
Index: DB_driver.php
===================================================================
--- DB_driver.php (revision 1)
+++ DB_driver.php (revision 8)
@@ -277,11 +277,13 @@
if ($this->db_debug)
{
- log_message('error', 'Query error: '.$this->_error_message());
+ $err_msg = $this->_error_message();
+ log_message('error', 'Query error: '.$err_msg);
+
return $this->display_error(
array(
'Error Number: '.$this->_error_number(),
- $this->_error_message(),
+ $err_msg,
$sql
)
);
@@ -1042,7 +1044,7 @@
$LANG->load('db');
$heading = 'MySQL Error';
-
+
if ($native == TRUE)
{
$message = $error;
Index: drivers/mssql/mssql_driver.php
===================================================================
--- drivers/mssql/mssql_driver.php (revision 1)
+++ drivers/mssql/mssql_driver.php (revision 8)
@@ -229,8 +229,10 @@
*/
function insert_id()
{
- // Not supported in MS SQL?
- return 0;
+ $query = $this->query("SELECT @@IDENTITY AS insert_id");
+
+ $row = $query->row();
+ return $row->insert_id;
}
// --------------------------------------------------------------------
@@ -316,8 +318,10 @@
*/
function _error_message()
{
- // Are errros even supported in MS SQL?
- return '';
+ // Note: only returns the last line of the last message. If reporting an
+ // error, take care to fetch the message BEFORE the error number, as getting
+ // the error number involves performing a query.
+ return mssql_get_last_message();
}
// --------------------------------------------------------------------
@@ -330,8 +334,10 @@
*/
function _error_number()
{
- // Are error numbers supported?
- return '';
+ $query = $this->query("SELECT @@ERROR AS error_number");
+
+ $row = $query->row();
+ return $row->error_number;
}
// --------------------------------------------------------------------
