/** * 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); } }
/** * 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()); } }