/* +----------------------------------------------------------------------+ | PHP HTML Embedded Scripting Language Version 3.0 | +----------------------------------------------------------------------+ | Copyright (c) 1997,1998 PHP Development Team (See Credits file) | +----------------------------------------------------------------------+ | This program is free software; you can redistribute it and/or modify | | it under the terms of one of the following licenses: | | | | A) the GNU General Public License as published by the Free Software | | Foundation; either version 2 of the License, or (at your option) | | any later version. | | | | B) the PHP License as published by the PHP Development Team and | | included in the distribution in the file: LICENSE | | | | This program is distributed in the hope that it will be useful, | | but WITHOUT ANY WARRANTY; without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU General Public License for more details. | | | | You should have received a copy of both licenses referred to here. | | If you did not, or have any questions about PHP licensing, please | | contact core@php.net. | +----------------------------------------------------------------------+ | Authors: Stig Sæther Bakken | | Andreas Karajannis | +----------------------------------------------------------------------+ */ /* $Id$ */ #ifndef _PHP_ODBC_H # define _PHP_ODBC_H # if HAVE_UODBC # ifndef MSVC5 # define FAR # endif /* checking in the same order as in configure.in */ # if HAVE_SOLID /* Solid Server */ # include # include # define HAVE_SQL_EXTENDED_FETCH 0 PHP_FUNCTION(solid_fetch_prev); # elif HAVE_EMPRESS /* Empress */ # include # include # define HAVE_SQL_EXTENDED_FETCH 0 # elif HAVE_ADABAS /* Adabas D */ # include # include # include # define HAVE_SQL_EXTENDED_FETCH 1 # elif HAVE_IODBC /* iODBC library */ # include # include # include # include # define HAVE_SQL_EXTENDED_FETCH 1 # define SQL_FD_FETCH_ABSOLUTE 0x00000010L # define SQL_CURSOR_DYNAMIC 2UL # define SQL_NO_TOTAL (-4) # define SQL_SO_DYNAMIC 0x00000004L # define SQL_LEN_DATA_AT_EXEC_OFFSET (-100) # define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) # elif HAVE_OPENLINK /* OpenLink ODBC drivers */ # include # include # include # include # define HAVE_SQL_EXTENDED_FETCH 1 # elif HAVE_VELOCIS /* Raima Velocis */ # define UNIX # define HAVE_SQL_EXTENDED_FETCH 1 # include # include # elif HAVE_CODBC /* Custom ODBC */ # define HAVE_SQL_EXTENDED_FETCH 1 # include # elif HAVE_DB2 /* DB2 CLI */ # define HAVE_SQL_EXTENDED_FETCH 1 # include # ifdef DB268K /* Need to include ASLM for 68K applications */ # include # endif # else /* MS ODBC */ # define HAVE_SQL_EXTENDED_FETCH 1 # include # include # include # endif extern php3_module_entry odbc_module_entry; # define odbc_module_ptr &odbc_module_entry /* user functions */ extern int php3_minit_odbc(INIT_FUNC_ARGS); extern int php3_mshutdown_odbc(SHUTDOWN_FUNC_ARGS); extern int php3_rinit_odbc(INIT_FUNC_ARGS); void php3_info_odbc(ZEND_MODULE_INFO_FUNC_ARGS); PHP_FUNCTION(odbc_setoption); PHP_FUNCTION(odbc_autocommit); PHP_FUNCTION(odbc_close); PHP_FUNCTION(odbc_close_all); PHP_FUNCTION(odbc_commit); PHP_FUNCTION(odbc_connect); PHP_FUNCTION(odbc_pconnect); void php3_odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int); PHP_FUNCTION(odbc_cursor); PHP_FUNCTION(odbc_exec); PHP_FUNCTION(odbc_do); PHP_FUNCTION(odbc_execute); PHP_FUNCTION(odbc_fetch_into); PHP_FUNCTION(odbc_fetch_row); PHP_FUNCTION(odbc_field_len); PHP_FUNCTION(odbc_field_name); PHP_FUNCTION(odbc_field_type); PHP_FUNCTION(odbc_field_num); PHP_FUNCTION(odbc_free_result); PHP_FUNCTION(odbc_num_fields); PHP_FUNCTION(odbc_num_rows); PHP_FUNCTION(odbc_prepare); PHP_FUNCTION(odbc_result); PHP_FUNCTION(odbc_result_all); PHP_FUNCTION(odbc_rollback); void php3_odbc_transact(INTERNAL_FUNCTION_PARAMETERS, int); PHP_FUNCTION(odbc_binmode); PHP_FUNCTION(odbc_longreadlen); typedef struct odbc_connection { #if HAVE_DB2 SQLHANDLE hdbc; #else HDBC hdbc; #endif int open; } odbc_connection; typedef struct odbc_result_value { char name[32]; char *value; long int vallen; SDWORD coltype; } odbc_result_value; typedef struct odbc_result { #if HAVE_DB2 SQLHANDLE stmt; #else HSTMT stmt; #endif odbc_result_value *values; SWORD numcols; SWORD numparams; # if HAVE_SQL_EXTENDED_FETCH int fetch_abs; # endif long longreadlen; int binmode; int fetched; odbc_connection *conn_ptr; } odbc_result; typedef struct { #if HAVE_DB2 SQLHANDLE henv; #else HENV henv; #endif char *defDB; char *defUser; char *defPW; long allow_persistent; long max_persistent; long max_links; long num_persistent; long num_links; int defConn; int le_result, le_conn, le_pconn; long defaultlrl; long defaultbinmode; HashTable *resource_list; HashTable *resource_plist; } php_odbc_globals; # ifndef ZTS extern php_odbc_globals odbc_globals; # endif int odbc_add_result(HashTable *list, odbc_result *result); odbc_result *odbc_get_result(HashTable *list, int count); void odbc_del_result(HashTable *list, int count); int odbc_add_conn(HashTable *list, HDBC conn); odbc_connection *odbc_get_conn(HashTable *list, int count); void odbc_del_conn(HashTable *list, int ind); #if HAVE_DB2 void odbc_sql_error(SQLHANDLE conn, SQLHANDLE stmt, char *func); #else void odbc_sql_error(HDBC conn, HSTMT stmt, char *func); #endif int odbc_bindcols(odbc_result *result); #define IS_SQL_LONG(x) (x == SQL_LONGVARBINARY || x == SQL_LONGVARCHAR) #define IS_SQL_BINARY(x) (x == SQL_BINARY || x == SQL_VARBINARY || x == SQL_LONGVARBINARY) #ifdef ZTS # define ODBCLS_D php_odbc_globals *odbc_globals # define ODBCLS_DC , ODBCLS_D # define ODBCLS_C odbc_globals # define ODBCLS_CC , ODBCLS_C # define ODBCG(v) (odbc_globals->v) # define ODBCLS_FETCH() php_odbc_globals *odbc_globals = ts_resource(odbc_globals_id) # define ODBC_TLS_VARS char *globals; ODBCLS_FETCH(); globals = (char *)odbc_globals; #else # define ODBCLS_D # define ODBCLS_DC # define ODBCLS_C # define ODBCLS_CC # define ODBCG(v) (odbc_globals.v) # define ODBCLS_FETCH() # define ODBC_TLS_VARS char *globals = (char *)&odbc_globals extern ZEND_API php_odbc_globals odbc_globals; #endif #else # define odbc_module_ptr NULL #endif /* HAVE_UODBC */ #define phpext_odbc_ptr odbc_module_ptr #endif /* _PHP_ODBC_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */