fmk             Tue Apr 17 10:39:43 2001 EDT

  Modified files:              
    /php4/ext/fbsql     php_fbsql.h php_fbsql.c 
  Log:
  Adding fbsql_fetch_assoc() functon
  
Index: php4/ext/fbsql/php_fbsql.h
diff -u php4/ext/fbsql/php_fbsql.h:1.2 php4/ext/fbsql/php_fbsql.h:1.3
--- php4/ext/fbsql/php_fbsql.h:1.2      Wed Apr  4 13:10:14 2001
+++ php4/ext/fbsql/php_fbsql.h  Tue Apr 17 10:39:43 2001
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_fbsql.h,v 1.2 2001/04/04 20:10:14 fmk Exp $ */
+/* $Id: php_fbsql.h,v 1.3 2001/04/17 17:39:43 fmk Exp $ */
 
 #define HAVE_FBSQL 1
 
@@ -67,6 +67,7 @@
 PHP_FUNCTION(fbsql_num_fields);
 PHP_FUNCTION(fbsql_fetch_row);
 PHP_FUNCTION(fbsql_fetch_array);
+PHP_FUNCTION(fbsql_fetch_assoc);
 PHP_FUNCTION(fbsql_fetch_object);
 PHP_FUNCTION(fbsql_data_seek);
 PHP_FUNCTION(fbsql_fetch_lengths);
@@ -87,6 +88,8 @@
 PHP_FUNCTION(fbsql_username);
 PHP_FUNCTION(fbsql_password);
 PHP_FUNCTION(fbsql_warnings);
+
+static void php_fbsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type);
 
 ZEND_BEGIN_MODULE_GLOBALS(fbsql)
    long allowPersistent;
Index: php4/ext/fbsql/php_fbsql.c
diff -u php4/ext/fbsql/php_fbsql.c:1.11 php4/ext/fbsql/php_fbsql.c:1.12
--- php4/ext/fbsql/php_fbsql.c:1.11     Mon Apr 16 09:27:11 2001
+++ php4/ext/fbsql/php_fbsql.c  Tue Apr 17 10:39:43 2001
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_fbsql.c,v 1.11 2001/04/16 16:27:11 fmk Exp $ */
+/* $Id: php_fbsql.c,v 1.12 2001/04/17 17:39:43 fmk Exp $ */
 
 /* TODO:
  *
@@ -201,6 +201,7 @@
        PHP_FE(fbsql_num_fields,        NULL)
        PHP_FE(fbsql_fetch_row,         NULL)
        PHP_FE(fbsql_fetch_array,       NULL)
+       PHP_FE(fbsql_fetch_assoc,       NULL)
        PHP_FE(fbsql_fetch_object,      NULL)
        PHP_FE(fbsql_data_seek,         NULL)
        PHP_FE(fbsql_fetch_lengths,     NULL)
@@ -2523,11 +2524,29 @@
 /* }}} */
 
 
-/* {{{ proto object fbsql_fetch_object(int result [, int result_typ])
+/* {{{ proto array fbsql_fetch_row(int result)
+       */
+PHP_FUNCTION(fbsql_fetch_row)
+{
+       php_fbsql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, FBSQL_NUM);
+}
+/* }}} */
+
+
+/* {{{ proto object fbsql_fetch_assoc(int result)
        */
+PHP_FUNCTION(fbsql_fetch_assoc)
+{
+       php_fbsql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, FBSQL_ASSOC);
+}
+/* }}} */
+
+
+/* {{{ proto object fbsql_fetch_object(int result [, int result_type])
+       */
 PHP_FUNCTION(fbsql_fetch_object)
 {
-       PHP_FN(fbsql_fetch_array)(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+       php_fbsql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, FBSQL_ASSOC);
        if (return_value->type==IS_ARRAY)
        {
                return_value->type=IS_OBJECT;
@@ -2538,72 +2557,15 @@
 /* }}} */
 
 
-/* {{{ proto array fbsql_fetch_row(int result)
-       */
-PHP_FUNCTION(fbsql_fetch_row)
+/* {{{ proto array fbsql_fetch_array(int result [, int result_type])
+   Fetch a result row as an array (associative, numeric or both)*/
+PHP_FUNCTION(fbsql_fetch_array)
 {
-       int   argc    = ARG_COUNT(ht);
-       zval    **argv[2];
-       int                 i;
-       int                 resultIndex;
-       PHPFBResult*       result;
-       int                 rowIndex ;
-       void**              row;
-       FBSQLLS_FETCH();
-
-       resultIndex = FB_SQL_G(resultIndex);
-
-       if ((argc < 0) || (argc > 1)) WRONG_PARAM_COUNT;
-       if (zend_get_parameters_ex(argc,&argv[0])==FAILURE) RETURN_FALSE;
-
-       if (argc >= 1) {
-               convert_to_long_ex(argv[0]);
-               resultIndex = (*argv[0])->value.lval;
-       }
-       result = phpfbGetResult(resultIndex);
-       if (result == NULL) RETURN_FALSE;
-   
-       rowIndex = result->rowIndex;
-
-       if (result->fetchHandle == NULL) {
-               RETURN_FALSE;
-       }
-       if (result->rowCount == 0) {
-               RETURN_FALSE;
-       }
-       if (result->rowCount == 0x7fffffff) {
-               if (!phpfbFetchRow(result,rowIndex)) {
-                       RETURN_FALSE;
-               }
-       }
-       if (!(row = fbcrhRowAtIndex(result->rowHandler,rowIndex))) {
-               RETURN_FALSE;
-       }
-       if (array_init(return_value)==FAILURE) {
-               RETURN_FALSE;
-       }
-       result->row = row;
-       for (i=0; i < result->columnCount; i++) {
-               char*        value;
-               unsigned int length;
-               if (row[i]) {
-                       phpfbColumnAsString(result,i,row[i],&length,&value);
-                       add_index_stringl(return_value,i,value,length,0);
-               }
-               else {
-                       add_index_unset(return_value,i);
-               }
-       }
-       result->rowIndex    = rowIndex+1;
-       result->columnIndex = 0;
-       FB_SQL_G(resultIndex) = resultIndex;
+       php_fbsql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, FBSQL_NUM);
 }
 /* }}} */
-
 
-/* {{{ proto array fbsql_fetch_array(int result [, int result_typ])
-       */
-PHP_FUNCTION(fbsql_fetch_array)
+static void php_fbsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
 {
        int   argc    = ARG_COUNT(ht);
        zval    **argv[2];
@@ -2611,7 +2573,6 @@
        int                 resultIndex;
        PHPFBResult* result;
        int                 rowIndex;
-       int                 result_type = FBSQL_BOTH;
        void**              row;
        FBSQLLS_FETCH();
 
@@ -2696,7 +2657,6 @@
        result->rowIndex    = result->rowIndex+1;
        result->columnIndex = 0;
 }
-/* }}} */
 
 
 /* {{{ proto int fbsql_data_seek(int result, int row_number)



-- 
PHP CVS 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