예제 #1
0
 /**
  * Checks to see if an SQL error occured
  * 
  * @param  fResult|fUnbufferedResult|boolean $result      The result object for the query
  * @param  mixed                             $extra_info  The sqlite extension will pass a string error message, the oci8 extension will pass the statement resource
  * @param  string                            $sql         The SQL that was executed
  * @return void
  */
 private function checkForError($result, $extra_info = NULL, $sql = NULL)
 {
     if ($result === FALSE || $result->getResult() === FALSE) {
         if ($this->extension == 'ibm_db2') {
             if (is_resource($extra_info)) {
                 $message = db2_stmt_errormsg($extra_info);
             } else {
                 $message = db2_stmt_errormsg();
             }
         } elseif ($this->extension == 'mssql') {
             $message = $this->error;
             unset($this->error);
         } elseif ($this->extension == 'mysql') {
             $message = mysql_error($this->connection);
         } elseif ($this->extension == 'mysqli') {
             if (is_object($extra_info)) {
                 $message = $extra_info->error;
             } else {
                 $message = mysqli_error($this->connection);
             }
         } elseif ($this->extension == 'oci8') {
             $error_info = oci_error($extra_info);
             $message = $error_info['message'];
         } elseif ($this->extension == 'pgsql') {
             $message = pg_last_error($this->connection);
         } elseif ($this->extension == 'sqlite') {
             $message = $extra_info;
         } elseif ($this->extension == 'sqlsrv') {
             $error_info = sqlsrv_errors(SQLSRV_ERR_ALL);
             $message = $error_info[0]['message'];
         } elseif ($this->extension == 'pdo') {
             if ($extra_info instanceof PDOStatement) {
                 $error_info = $extra_info->errorInfo();
             } else {
                 $error_info = $this->connection->errorInfo();
             }
             if (empty($error_info[2])) {
                 $error_info[2] = 'Unknown error - this usually indicates a bug in the PDO driver';
             }
             $message = $error_info[2];
         }
         $db_type_map = array('db2' => 'DB2', 'mssql' => 'MSSQL', 'mysql' => 'MySQL', 'oracle' => 'Oracle', 'postgresql' => 'PostgreSQL', 'sqlite' => 'SQLite');
         throw new fSQLException('%1$s error (%2$s) in %3$s', $db_type_map[$this->type], $message, is_object($result) ? $result->getSQL() : $sql);
     }
 }
예제 #2
0
 /**
  * Checks to see if an SQL error occured
  * 
  * @param  fResult|fUnbufferedResult $result      The result object for the query
  * @param  mixed                     $extra_info  The sqlite extension will pass a string error message, the oci8 extension will pass the statement resource
  * @return void
  */
 private function checkForError($result, $extra_info = NULL)
 {
     if ($result->getResult() === FALSE) {
         if ($this->extension == 'mssql') {
             $message = mssql_get_last_message();
         } elseif ($this->extension == 'mysql') {
             $message = mysql_error($this->connection);
         } elseif ($this->extension == 'mysqli') {
             $message = mysqli_error($this->connection);
         } elseif ($this->extension == 'oci8') {
             $error_info = oci_error($extra_info);
             $message = $error_info['message'];
         } elseif ($this->extension == 'odbc') {
             $message = odbc_errormsg($this->connection);
         } elseif ($this->extension == 'pgsql') {
             $message = pg_last_error($this->connection);
         } elseif ($this->extension == 'sqlite') {
             $message = $extra_info;
         } elseif ($this->extension == 'sqlsrv') {
             $error_info = sqlsrv_errors(SQLSRV_ERR_ALL);
             $message = $error_info[0]['message'];
         } elseif ($this->extension == 'pdo') {
             $error_info = $this->connection->errorInfo();
             $message = $error_info[2];
         }
         $db_type_map = array('mssql' => 'MSSQL', 'mysql' => 'MySQL', 'oracle' => 'Oracle', 'postgresql' => 'PostgreSQL', 'sqlite' => 'SQLite');
         throw new fSQLException('%1$s error (%2$s) in %3$s', $db_type_map[$this->type], $message, $result->getSQL());
     }
 }