CVS update: php3/functions

From: Date: Thu, 13 Aug 1998 18:15:20 +0000
Subject: CVS update: php3/functions
Groups: php.dev 
Request: Send a blank email to php-dev+get-137@lists.php.net to get a copy of this message
Date: Thursday August 13, 1998 @ 14:15 Author: danny Update of /repository/php3/functions In directory asf:/tmp/cvs-serv27090/functions Modified Files: ifx.ec Log Message: -blob bug typo correction -ifx_fieldtypes($result) : returns array with $array["fieldname"] = SQLTYPE -ifx_fieldproperties($result) : returns array with $array["fieldname"] = "SQLTYPE;encoded length;precision;scale" Index: php3/functions/ifx.ec diff -c php3/functions/ifx.ec:1.5 php3/functions/ifx.ec:1.6 *** php3/functions/ifx.ec:1.5 Wed Aug 12 16:34:32 1998 --- php3/functions/ifx.ec Thu Aug 13 14:15:20 1998 *************** *** 115,120 **** --- 115,122 ---- {"ifx_fetch_object", php3_ifx_fetch_object, NULL}, {"ifx_free_result", php3_ifx_free_result, NULL}, {"ifx_htmltbl_result", php3_ifx_htmltbl_result, NULL}, + {"ifx_fieldtypes", php3_ifx_fieldtypes, NULL}, + {"ifx_fieldproperties",php3_ifx_fieldproperties, NULL}, {NULL, NULL, NULL} }; *************** *** 1857,1867 **** } EXEC SQL GET DESCRIPTOR :descrpid VALUE :i :*locator = DATA; } ! php3_printf("<td>%s</td>", char_data); break; case SQLBYTES : ++locind; ! php3_printf("<td>(BLOB)</td>", "(BLOB)"); break; default : sprintf(string_data,"ESQL/C : %s : unsupported field type[%d]", --- 1859,1869 ---- } EXEC SQL GET DESCRIPTOR :descrpid VALUE :i :*locator = DATA; } ! php3_printf("<td>%s</td>", locator->loc_buffer); break; case SQLBYTES : ++locind; ! php3_printf("<td>(BLOB)</td>"); break; default : sprintf(string_data,"ESQL/C : %s : unsupported field type[%d]", *************** *** 1898,1903 **** --- 1900,2229 ---- RETURN_LONG(Ifx_Result->rowid); } + + + void php3_ifx_fieldtypes(INTERNAL_FUNCTION_PARAMETERS) + { + pval *result, *arg2; + IFX_RES *Ifx_Result; + + EXEC SQL BEGIN DECLARE SECTION; + char *ifx; /* connection ID */ + char *cursorid; /* query cursor id */ + char *statemid; /* statement id */ + char *descrpid; /* descriptor id */ + char *statement; /* query text */ + int fieldcount; /* field count */ + int i; /* an index */ + char fieldname[64]; /* fieldname */ + short fieldtype; /* field type */ + int field_ind; /* the field index */ + int fieldleng; /* field length */ + char *field; /* the field */ + + short indicator; + int int_data; + char *char_data = NULL; + long date_data; + interval intvl_data = {0}; + datetime dt_data = {0}; + decimal dec_data = {0}; + short short_data; + float float_data; + double double_data; + loc_t *locator; + EXEC SQL END DECLARE SECTION; + + int type; + int num_fields; + + char string_data[256]; + long long_data; + char *p; + int locind; + FILE *fp; + char *blobfilename; + char *blobdir; + char *table_options; + int moredata; + + Informix_TLS_VARS; + + + switch (ARG_COUNT(ht)) { + case 1: + if (getParameters(ht, 1, &result)==FAILURE) { + RETURN_FALSE; + } + table_options = NULL; + break; + case 2: + if (getParameters(ht, 2, &result, &arg2)==FAILURE) { + RETURN_FALSE; + } + table_options = arg2->value.str.val; + break; + default: + WRONG_PARAM_COUNT; + break; + } + + convert_to_long(result); + Ifx_Result = (IFX_RES *) php3_list_find(result->value.lval,&type); + + if (type!=Informix_GLOBAL(php3_ifx_module).le_result) { + php3_error(E_WARNING, + "%d is not a Informix result index",result->value.lval); + RETURN_FALSE; + } + + if (strcmp(Ifx_Result->cursorid,"") == 0) { + php3_error(E_WARNING,"Not a select cursor !"); + RETURN_FALSE; + } + + ifx = Ifx_Result->connecid; + cursorid = Ifx_Result->cursorid; + statemid = Ifx_Result->statemid; + descrpid = Ifx_Result->descrpid; + fieldcount = Ifx_Result->numcols; + + if (array_init(return_value)==FAILURE) { + RETURN_FALSE; + } + num_fields = fieldcount; + for (i = 1; i <= num_fields; i++) { + EXEC SQL GET DESCRIPTOR :descrpid VALUE :i :fieldname = NAME, + :fieldtype = TYPE; + if (ifx_check() < 0) { + php3_error(E_WARNING,"Get descriptor (field # %d) fails (%s)", + i, + ifx_error(ifx)); + RETURN_FALSE; + } + + p = fieldname; /* rtrim fieldname */ + while ((*p != ' ') && (p < &fieldname[sizeof(fieldname) - 1])) ++p; + *p = 0; + + switch (fieldtype) { + case SQLSERIAL : + char_data = "SQLSERIAL"; + break; + case SQLINT : + char_data = "SQLINT"; + break; + case SQLSMINT : + char_data = "SQLSMINT"; + break; + case SQLDECIMAL : + char_data = "SQLDECIMAL"; + break; + case SQLMONEY : + char_data = "SQLMONEY"; + break; + case SQLSMFLOAT : + char_data = "SQLSMFLOAT"; + break; + case SQLFLOAT : + char_data = "SQLFLOAT"; + break; + case SQLDATE : + char_data = "SQLDATE"; + break; + case SQLDTIME : + char_data = "SQLDTIME"; + break; + case SQLINTERVAL: + char_data = "SQLINTERVAL"; + break; + case SQLCHAR : + char_data = "SQLCHAR"; + break; + case SQLVCHAR : + char_data = "SQLVCHAR"; + break; + case SQLTEXT : + char_data = "SQLTEXT"; + break; + case SQLBYTES : + char_data = "SQLBYTES"; + break; + default : + char_data = "UNKNOWN"; + break; + } /* switch (fieldtype) */ + + add_assoc_string(return_value, fieldname, char_data, DUP); + + } /* for() */ + + } + + void php3_ifx_fieldproperties(INTERNAL_FUNCTION_PARAMETERS) + { + pval *result, *arg2; + IFX_RES *Ifx_Result; + + EXEC SQL BEGIN DECLARE SECTION; + char *ifx; /* connection ID */ + char *cursorid; /* query cursor id */ + char *statemid; /* statement id */ + char *descrpid; /* descriptor id */ + char *statement; /* query text */ + int fieldcount; /* field count */ + int i; /* an index */ + char fieldname[64]; /* fieldname */ + short fieldtype; /* field type */ + int field_ind; /* the field index */ + int fieldleng; /* field length */ + char *field; /* the field */ + + short indicator; + int int_data; + char *char_data = NULL; + long date_data; + interval intvl_data = {0}; + datetime dt_data = {0}; + decimal dec_data = {0}; + short short_data; + float float_data; + double double_data; + loc_t *locator; + int size; + int precision; + int scale; + EXEC SQL END DECLARE SECTION; + + int type; + int num_fields; + + char string_data[256]; + long long_data; + char *p; + int locind; + FILE *fp; + char *blobfilename; + char *blobdir; + char *table_options; + int moredata; + + Informix_TLS_VARS; + + + switch (ARG_COUNT(ht)) { + case 1: + if (getParameters(ht, 1, &result)==FAILURE) { + RETURN_FALSE; + } + table_options = NULL; + break; + case 2: + if (getParameters(ht, 2, &result, &arg2)==FAILURE) { + RETURN_FALSE; + } + table_options = arg2->value.str.val; + break; + default: + WRONG_PARAM_COUNT; + break; + } + + convert_to_long(result); + Ifx_Result = (IFX_RES *) php3_list_find(result->value.lval,&type); + + if (type!=Informix_GLOBAL(php3_ifx_module).le_result) { + php3_error(E_WARNING, + "%d is not a Informix result index",result->value.lval); + RETURN_FALSE; + } + + if (strcmp(Ifx_Result->cursorid,"") == 0) { + php3_error(E_WARNING,"Not a select cursor !"); + RETURN_FALSE; + } + + ifx = Ifx_Result->connecid; + cursorid = Ifx_Result->cursorid; + statemid = Ifx_Result->statemid; + descrpid = Ifx_Result->descrpid; + fieldcount = Ifx_Result->numcols; + + if (array_init(return_value)==FAILURE) { + RETURN_FALSE; + } + num_fields = fieldcount; + for (i = 1; i <= num_fields; i++) { + EXEC SQL GET DESCRIPTOR :descrpid VALUE :i :fieldname = NAME, + :fieldtype = TYPE, + :size = LENGTH, + :precision = PRECISION, + :scale = SCALE; + if (ifx_check() < 0) { + php3_error(E_WARNING,"Get descriptor (field # %d) fails (%s)", + i, + ifx_error(ifx)); + RETURN_FALSE; + } + + p = fieldname; /* rtrim fieldname */ + while ((*p != ' ') && (p < &fieldname[sizeof(fieldname) - 1])) ++p; + *p = 0; + switch (fieldtype) { + case SQLSERIAL : + char_data = "SQLSERIAL"; + break; + case SQLINT : + char_data = "SQLINT"; + break; + case SQLSMINT : + char_data = "SQLSMINT"; + break; + case SQLDECIMAL : + char_data = "SQLDECIMAL"; + break; + case SQLMONEY : + char_data = "SQLMONEY"; + break; + case SQLSMFLOAT : + char_data = "SQLSMFLOAT"; + break; + case SQLFLOAT : + char_data = "SQLFLOAT"; + break; + case SQLDATE : + char_data = "SQLDATE"; + break; + case SQLDTIME : + char_data = "SQLDTIME"; + break; + case SQLINTERVAL: + char_data = "SQLINTERVAL"; + break; + case SQLCHAR : + char_data = "SQLCHAR"; + break; + case SQLVCHAR : + char_data = "SQLVCHAR"; + break; + case SQLTEXT : + char_data = "SQLTEXT"; + break; + case SQLBYTES : + char_data = "SQLBYTES"; + break; + default : + char_data = "UNKNOWN"; + break; + } /* switch (fieldtype) */ + + sprintf(string_data,"%s;%d;%d;%d",char_data, size, precision, scale); + add_assoc_string(return_value, fieldname, string_data, DUP); + + } /* for() */ + + } + void php3_ifx_num_rows(INTERNAL_FUNCTION_PARAMETERS) { -- PHP Development Mailing List http://www.php.net/ To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net For help: php-dev-help@lists.php.net

« previous php.dev (#137) next »