Hello hello!

One of the changes I ment to get into PHP4.1 was this change to
odbc_fetch_into.

Traditionally, the function can take upto three params like so:
odbc_fetch_into(required, [ not required,] required)
Meaning params 1and2 or 1and3 are always required.

To me this is a rather backwards way of doing this, and would like to
correct this behavior to reflect a more consistent style to:
(required, required, [ not required])

Hopefuly this patch does this correctly for al db's.  If any developers
would be so kind to review, comment, and do some testing, I'd appriciate
it.  Thanks.

>---------------------------------------------------------------<
Dan Kalowsky                    "Tonight I think I'll walk alone.
http://www.deadmime.org/~dank    I'll find soul as I go home."
[EMAIL PROTECTED]                - "Temptation", New Order
Index: php_odbc.c
===================================================================
RCS file: /repository/php4/ext/odbc/php_odbc.c,v
retrieving revision 1.119
diff -u -r1.119 php_odbc.c
--- php_odbc.c  4 Mar 2002 09:10:31 -0000       1.119
+++ php_odbc.c  5 Mar 2002 06:48:13 -0000
@@ -69,7 +69,7 @@
 
 #define SAFE_SQL_NTS(n) ((SWORD) ((n)?(SQL_NTS):0))
 
-static unsigned char a3_arg3_and_3_force_ref[] = { 3, BYREF_NONE, BYREF_FORCE, 
BYREF_FORCE };
+static unsigned char a3_arg3_and_3_force_ref[] = { 3, BYREF_NONE, BYREF_FORCE, 
+BYREF_ALLOW};
 
 /* {{{ odbc_functions[]
  */
@@ -1379,20 +1379,22 @@
 /* }}} */
 #endif
 
-/* {{{ proto int odbc_fetch_into(int result_id [, int rownumber], array result_array)
+/* {{{ proto int odbc_fetch_into(int result_id, array result_array, [, int 
+rownumber])
    Fetch one result row into an array */ 
 PHP_FUNCTION(odbc_fetch_into)
 {
        int numArgs, i;
        odbc_result *result;
        RETCODE rc;
-    SWORD sql_c_type;
+       SWORD sql_c_type;
        char *buf = NULL;
+       pval **pv_res, **pv_res_arr, *tmp;
 #ifdef HAVE_SQL_EXTENDED_FETCH
+       pval **pv_row;
        UDWORD crow;
        UWORD  RowStatus[1];
        SDWORD rownum = -1;
-       pval **pv_res, **pv_row, **pv_res_arr, *tmp;
+#endif /* HAVE_SQL_EXTENDED_FETCH */
        
        numArgs = ZEND_NUM_ARGS();
 
@@ -1401,26 +1403,18 @@
                        if (zend_get_parameters_ex(2, &pv_res, &pv_res_arr) == 
FAILURE)
                                WRONG_PARAM_COUNT;
                        break;
+#ifdef HAVE_SQL_EXTENDED_FETCH
                case 3:
-                       if (zend_get_parameters_ex(3, &pv_res, &pv_row, &pv_res_arr) 
== FAILURE)
+                       if (zend_get_parameters_ex(3, &pv_res, &pv_res_arr, &pv_row) 
+== FAILURE)
                                WRONG_PARAM_COUNT;
                        SEPARATE_ZVAL(pv_row);
                        convert_to_long_ex(pv_row);
                        rownum = Z_LVAL_PP(pv_row);
                        break;
+#endif /* HAVE_SQL_EXTENDED_FETCH */
                default:
                        WRONG_PARAM_COUNT;
        }
-
-#else
-       pval **pv_res, **pv_res_arr, *tmp;
-
-       numArgs = ZEND_NUM_ARGS();
-
-       if (numArgs != 2 || zend_get_parameters_ex(2, &pv_res, &pv_res_arr) == 
FAILURE) {
-               WRONG_PARAM_COUNT;
-       }
-#endif
 
        ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", 
le_result);
        
-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to