ID: 9397
Updated by: kara
Reported By: [EMAIL PROTECTED]
Old-Status: Open
Status: Feedback
Bug Type: ODBC related
Assigned To: 
Comments:

In ODBC 2.x it is not possible to pass string values to
SQLSetStmtOption(). It is possible with ODBC 3,
SQLSetStmtAttr() has an additional parameter to specify the
string length. 
By the way: I couldn't find SQL_EXTENSION_NAME as possible
attribute to SQLSetStmtAttr(). What's it's pupose?


Previous Comments:
---------------------------------------------------------------------------

[2001-02-22 04:55:38] [EMAIL PROTECTED]
When I tried to use odbc_setoption() to set file extension
name:

odbc_setoption($sth, 2, 2001, "JPG"); /*2001 means SQL_EXTENSION_NAME*/

php will hang.

The patch followed:

****** BEGIN PATCH ***********

--- php_odbc.c.old      Wed Jan  3 23:04:50 2001
+++ php_odbc.c  Thu Feb 22 10:29:52 2001
@@ -2393,6 +2393,7 @@
        odbc_result     *result;
        RETCODE rc;
        pval **pv_handle, **pv_which, **pv_opt, **pv_val;
+       UDWORD val;
 
        if ( zend_get_parameters_ex(4, &pv_handle, &pv_which, &pv_opt, &pv_val) == 
FAILURE) {
                WRONG_PARAM_COUNT;
@@ -2400,7 +2401,20 @@
  
        convert_to_long_ex(pv_which);
        convert_to_long_ex(pv_opt);
+       switch (Z_TYPE_PP(pv_val)) {
+               case IS_LONG:
        convert_to_long_ex(pv_val);
+                       val = (*pv_val)->value.lval;
+                       break;
+               case IS_STRING:
+                       convert_to_string_ex(pv_val); 
+                       val = (UDWORD) (*pv_val)->value.str.val;
+                       break;
+               default:
+                       php_error(E_WARNING, "Unknown param type");
+                       RETURN_FALSE;
+                       break;
+       }
 
        switch ((*pv_which)->value.lval) {
                case 1:         /* SQLSetConnectOption */
@@ -2409,7 +2423,7 @@
                                php_error(E_WARNING, "Can't set option for persistent 
connection");
                                RETURN_FALSE;
                        }
-                       rc = SQLSetConnectOption(conn->hdbc, (unsigned 
short)((*pv_opt)->value.lval), (*pv_val)->value.lval);
+                       rc = SQLSetConnectOption(conn->hdbc, (unsigned 
+short)((*pv_opt)->value.lval), val);
                        if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
                                odbc_sql_error(conn->henv, conn->hdbc, SQL_NULL_HSTMT, 
"SetConnectOption");
                                RETURN_FALSE;
@@ -2418,7 +2432,7 @@
                case 2:         /* SQLSetStmtOption */
                        ZEND_FETCH_RESOURCE(result, odbc_result *, pv_handle, -1, 
"ODBC result", le_result);
                        
-                       rc = SQLSetStmtOption(result->stmt, (unsigned 
short)((*pv_opt)->value.lval), ((*pv_val)->value.lval));
+                       rc = SQLSetStmtOption(result->stmt, (unsigned 
+short)((*pv_opt)->value.lval), val);
 
                        if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
                                odbc_sql_error(result->conn_ptr->henv, 
result->conn_ptr->hdbc, result->stmt, "SetStmtOption");


****** END PATCH ***********

---------------------------------------------------------------------------



ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=9397&edit=2


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to