Back to index

php5  5.3.10
Defines | Functions | Variables
php_pdo_odbc.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define phpext_pdo_odbc_ptr   &pdo_odbc_module_entry
#define PDO_ODBC_G(v)   (pdo_odbc_globals.v)

Functions

 PHP_MINIT_FUNCTION (pdo_odbc)
 PHP_MSHUTDOWN_FUNCTION (pdo_odbc)
 PHP_RINIT_FUNCTION (pdo_odbc)
 PHP_RSHUTDOWN_FUNCTION (pdo_odbc)
 PHP_MINFO_FUNCTION (pdo_odbc)

Variables

zend_module_entry pdo_odbc_module_entry

Define Documentation

#define PDO_ODBC_G (   v)    (pdo_odbc_globals.v)

Definition at line 60 of file php_pdo_odbc.h.

Definition at line 25 of file php_pdo_odbc.h.


Function Documentation

PHP_MINFO_FUNCTION ( pdo_odbc  )

Definition at line 163 of file pdo_odbc.c.

{
       php_info_print_table_start();
       php_info_print_table_header(2, "PDO Driver for ODBC (" PDO_ODBC_TYPE ")" , "enabled");
#ifdef SQL_ATTR_CONNECTION_POOLING
       php_info_print_table_row(2, "ODBC Connection Pooling",  pdo_odbc_pool_on == SQL_CP_OFF ?
                     "Disabled" : (pdo_odbc_pool_mode == SQL_CP_STRICT_MATCH ? "Enabled, strict matching" : "Enabled, relaxed matching"));
#else
       php_info_print_table_row(2, "ODBC Connection Pooling", "Not supported in this build");
#endif
       php_info_print_table_end();

#if defined(DB2CLI_VER) && !defined(PHP_WIN32)
       DISPLAY_INI_ENTRIES();
#endif
}

Here is the call graph for this function:

PHP_MINIT_FUNCTION ( pdo_odbc  )

Definition at line 85 of file pdo_odbc.c.

{
#ifdef SQL_ATTR_CONNECTION_POOLING
       char *pooling_val = NULL;
#endif

       if (FAILURE == php_pdo_register_driver(&pdo_odbc_driver)) {
              return FAILURE;
       }

#if defined(DB2CLI_VER) && !defined(PHP_WIN32)
       REGISTER_INI_ENTRIES();
       {
              char *instance = INI_STR("pdo_odbc.db2_instance_name");
              if (instance) {
                     char *env = malloc(sizeof("DB2INSTANCE=") + strlen(instance));
                     if (!env) {
                            return FAILURE;
                     }
                     strcpy(env, "DB2INSTANCE=");
                     strcat(env, instance);
                     putenv(env);
                     /* after this point, we can't free env without breaking the environment */
              }
       }
#endif

#ifdef SQL_ATTR_CONNECTION_POOLING
       /* ugh, we don't really like .ini stuff in PDO, but since ODBC connection
        * pooling is process wide, we can't set it from within the scope of a
        * request without affecting others, which goes against our isolated request
        * policy.  So, we use cfg_get_string here to check it this once.
        * */
       if (FAILURE == cfg_get_string("pdo_odbc.connection_pooling", &pooling_val) || pooling_val == NULL) {
              pooling_val = "strict";
       }
       if (strcasecmp(pooling_val, "strict") == 0 || strcmp(pooling_val, "1") == 0) {
              pdo_odbc_pool_on = SQL_CP_ONE_PER_HENV;
              pdo_odbc_pool_mode = SQL_CP_STRICT_MATCH;
       } else if (strcasecmp(pooling_val, "relaxed") == 0) {
              pdo_odbc_pool_on = SQL_CP_ONE_PER_HENV;
              pdo_odbc_pool_mode = SQL_CP_RELAXED_MATCH;
       } else if (*pooling_val == '\0' || strcasecmp(pooling_val, "off") == 0) {
              pdo_odbc_pool_on = SQL_CP_OFF;
       } else {
              php_error_docref(NULL TSRMLS_CC, E_ERROR, "Error in pdo_odbc.connection_pooling configuration.  Value MUST be one of 'strict', 'relaxed' or 'off'");
              return FAILURE;
       }

       if (pdo_odbc_pool_on != SQL_CP_OFF) {
              SQLSetEnvAttr(SQL_NULL_HANDLE, SQL_ATTR_CONNECTION_POOLING, (void*)pdo_odbc_pool_on, 0);
       }
#endif

       REGISTER_PDO_CLASS_CONST_LONG("ODBC_ATTR_USE_CURSOR_LIBRARY", PDO_ODBC_ATTR_USE_CURSOR_LIBRARY);
       REGISTER_PDO_CLASS_CONST_LONG("ODBC_ATTR_ASSUME_UTF8", PDO_ODBC_ATTR_ASSUME_UTF8);
       REGISTER_PDO_CLASS_CONST_LONG("ODBC_SQL_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED);
       REGISTER_PDO_CLASS_CONST_LONG("ODBC_SQL_USE_DRIVER", SQL_CUR_USE_DRIVER);
       REGISTER_PDO_CLASS_CONST_LONG("ODBC_SQL_USE_ODBC", SQL_CUR_USE_ODBC);
       
       return SUCCESS;
}

Here is the call graph for this function:

PHP_MSHUTDOWN_FUNCTION ( pdo_odbc  )

Definition at line 151 of file pdo_odbc.c.

{
#if defined(DB2CLI_VER) && !defined(PHP_WIN32)
       UNREGISTER_INI_ENTRIES();
#endif
       php_pdo_unregister_driver(&pdo_odbc_driver);
       return SUCCESS;
}

Here is the call graph for this function:

PHP_RINIT_FUNCTION ( pdo_odbc  )
PHP_RSHUTDOWN_FUNCTION ( pdo_odbc  )

Variable Documentation

zend_module_entry pdo_odbc_module_entry

Definition at line 49 of file pdo_odbc.c.