#include #include /* #include
*/ #include #include #include #include "ext/standard/php_standard.h" #include "ext/standard/info.h" #include #if !defined(WIN32) # define stricmp strcasecmp #endif static longreadlen=0; static void column_to_string(SQLS stmt, int i, char *buffer, int *len); PHP_MINFO_FUNCTION(ovrimos) { php_printf(""Ovrimos" module
\n"); } /* Main User Functions */ /* {{{ proto int ovrimos_connect(string host, string db, string user, string password) Connect to an Ovrimos database */ PHP_FUNCTION(ovrimos_connect) { pval *arg1, *arg2, *arg3, *arg4; SQLH conn=0; if(ARG_COUNT(ht)!=4 || getParameters(ht,4,&arg1,&arg2,&arg3,&arg4)==FAILURE) { WRONG_PARAM_COUNT; } convert_to_string(arg1); convert_to_string(arg2); convert_to_string(arg3); convert_to_string(arg4); if(!sqlConnect(arg1->value.str.val,arg2->value.str.val,arg3->value.str.val, arg4->value.str.val,&conn, 0)) { RETURN_LONG(0); } RETURN_LONG((int)conn+1); } /* }}} */ /* {{{ proto void ovrimos_close(int connection) Close a connection */ PHP_FUNCTION(ovrimos_close) { pval *arg1; SQLH conn; if(ARG_COUNT(ht)!=1 || getParameters(ht,1,&arg1)==FAILURE || arg1->type!=IS_LONG) { WRONG_PARAM_COUNT; } conn=(SQLH)(arg1->value.lval-1); (void)sqlDisConnect(conn); } /* }}} */ /* {{{ proto void ovrimos_close_all() Close all connections */ PHP_FUNCTION(ovrimos_close_all) { pval *arg1; SQLH conn; (void)sqlDisconnectAll(); } /* }}} */ /* {{{ proto int ovrimos_longreadlen(int result_id, int length) Handle LONG columns */ PHP_FUNCTION(ovrimos_longreadlen) { pval *arg1, *arg2; if (getParameters(ht, 2, &arg1, &arg2) == FAILURE){ WRONG_PARAM_COUNT; } convert_to_long(arg1); convert_to_long(arg2); longreadlen=arg2->value.lval; RETURN_TRUE; } /* }}} */ /* {{{ proto int ovrimos_prepare(int connection_id, string query) Prepares a statement for execution */ PHP_FUNCTION(ovrimos_prepare) { pval *arg1, *arg2; SQLH conn; char *query; SQLS stmt; if (getParameters(ht, 2, &arg1, &arg2) == FAILURE){ WRONG_PARAM_COUNT; } convert_to_long(arg1); convert_to_string(arg2); conn = (SQLH)(arg1->value.lval-1); query = arg2->value.str.val; if(!sqlAllocStmt(conn,&stmt)) { RETURN_FALSE; } if(!sqlPrepare(stmt,query)) { sqlFreeStmt(stmt); RETURN_FALSE; } if(!sqlGetOutputColDescr(stmt)) { sqlFreeStmt(stmt); RETURN_FALSE; } if(!sqlGetParamDescr(stmt)) { sqlFreeStmt(stmt); RETURN_FALSE; } RETURN_LONG((int)stmt+1); } /* }}} */ /* * Execute prepared SQL statement. Supports only input parameters. */ /* {{{ proto int ovrimos_execute(int result_id [, array parameters_array]) Execute a prepared statement */ PHP_FUNCTION(ovrimos_execute) { pval *arg1, *arg2; SQLS stmt; int numArgs; int icol, colnb; numArgs = ARG_COUNT(ht); if (getParameters(ht, numArgs, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long(arg1); stmt=(SQLS)(arg1->value.lval-1); colnb=sqlGetParamNb(stmt); if(colnb!=0) { pval **tmp; int arr_elem; if (arg2->type != IS_ARRAY){ php_error(E_WARNING, "Not an array in call to ovrimos_execute()"); RETURN_FALSE; } arr_elem=zend_hash_num_elements(arg2->value.ht); if (arr_elem < colnb) { php_error(E_WARNING,"Not enough parameters in call to ovrimos_execute(): %d instead of %d",arr_elem,colnb); RETURN_FALSE; } zend_hash_internal_pointer_reset(arg2->value.ht); for(icol=0; icolvalue.ht, (void **) &tmp) == FAILURE) { php_error(E_WARNING,"Error getting parameter %d in call to ovrimos_execute()", icol); RETURN_FALSE; } convert_to_string(*tmp); if ((*tmp)->type != IS_STRING) { php_error(E_WARNING,"Error converting parameter %d to string in call to ovrimos_execute()",icol); RETURN_FALSE; } /* PHP data to param type */ from_type.type=T_VARCHAR; from_type.u.length=(*tmp)->value.str.len; *buffer=0; memcpy(buffer+1,(*tmp)->value.str.val,from_type.u.length); buffer[from_type.u.length+1]=0; ret=type_convert(buffer,&from_type,&to_type,0,&err); switch(err) { case cvt_trunc: msg="Data truncated"; break; case cvt_range: msg="Numeric value out of range"; break; case cvt_prec: msg="Precision lost"; break; case cvt_incomp: msg="Restricted data type attribute violation"; break; case cvt_no: msg="Conversion failed"; break; } if(!ret) { php_error(E_WARNING,"Error converting parameter %d: %s in call to ovrimos_execute()",icol, msg); RETURN_FALSE; } len=sql_type_size(to_type)-1; if(!sqlPutParam(stmt,icol,buffer+1,len)) { php_error(E_WARNING, "Could send parameter %d (%d bytes) in call to ovrimos_execute()",icol,len); RETURN_FALSE; } } } if(!sqlExec(stmt)) { RETURN_FALSE; } RETURN_TRUE; } /* }}} */ /* {{{ proto string ovrimos_cursor(int result_id) Get cursor name */ PHP_FUNCTION(ovrimos_cursor) { char cname[126]; pval *arg1; SQLS stmt; if ( getParameters(ht, 1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long(arg1); stmt=(SQLS)(arg1->value.lval-1); if(!sqlGetCursorName(stmt,cname)) { RETURN_FALSE; } RETURN_STRING(cname,1); } /* }}} */ /* {{{ proto int ovrimos_exec(int connection_id, string query) Prepare and execute an SQL statement */ PHP_FUNCTION(ovrimos_exec) { pval *arg1, *arg2; SQLH conn; SQLS stmt; int numArgs; char *query; numArgs = ARG_COUNT(ht); if (getParameters(ht, 2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long(arg1); convert_to_string(arg2); conn = (SQLH)(arg1->value.lval-1); query = arg2->value.str.val; if(!sqlAllocStmt(conn,&stmt)) { RETURN_FALSE; } if(!sqlExecDirect(stmt,query)) { sqlFreeStmt(stmt); RETURN_FALSE; } if(!sqlGetOutputColDescr(stmt)) { sqlFreeStmt(stmt); RETURN_FALSE; } if(!sqlGetParamDescr(stmt)) { sqlFreeStmt(stmt); RETURN_FALSE; } RETURN_LONG((int)stmt+1); } /* }}} */ static void column_to_string(SQLS stmt, int i, char *buffer, int *len) { const char *bf=sqlColValue(stmt,i,0); switch(sqlGetOutputColType(stmt,i)) { case T_BIGINT: case T_UBIGINT: { switch(sqlGetOutputColType(stmt,i)) { case T_BIGINT: printsint64(Read(sint64,bf),buffer); break; case T_UBIGINT: printuint64(Read(uint64,bf),buffer); break; } *len=strlen(buffer); } break; case T_INTEGER: sprintf(buffer,"%11ld",Read(sint32,bf)); *len=strlen(buffer); break; case T_UINTEGER: sprintf(buffer,"%10lu",Read(uint32,bf)); *len=strlen(buffer); break; case T_SMALLINT: sprintf(buffer,"%6hd",Read(sint16,bf)); *len=strlen(buffer); break; case T_USMALLINT: sprintf(buffer,"%5hu",Read(uint16,bf)); *len=strlen(buffer); break; case T_TINYINT: sprintf(buffer,"%4hd",(sint16)Read(sint8,bf)); *len=strlen(buffer); break; case T_UTINYINT: sprintf(buffer,"%3hu",(uint16)Read(uint8,bf)); *len=strlen(buffer); break; case T_BIT: sprintf(buffer,"%s",(Read(uint8,bf)==0)?"off":"on"); *len=strlen(buffer); break; case T_REAL: sprintf(buffer,"%9.7g",(double)Read(float,bf)); *len=strlen(buffer); break; case T_FLOAT: case T_DOUBLE: sprintf(buffer,"%19.17g",Read(double,bf)); *len=strlen(buffer); break; case T_DECIMAL: case T_NUMERIC: { int prec=sqlGetOutputColPrecision(stmt,i); int scale=sqlGetOutputColScale(stmt,i); sprintf(buffer,"%*.*f",prec+2,scale,Read(double,bf)); *len=strlen(buffer); } break; case T_CHAR: case T_VARCHAR: strcpy(buffer,bf); *len=strlen(buffer); break; case T_UNI_CHAR: case T_UNI_VARCHAR: uni_strcpy((uni_char*)buffer,(uni_char*)bf); *len=uni_strlen((uni_char*)buffer); break; case T_BINARY: { int sz=sqlGetOutputColLength(stmt,i); memcpy(buffer,bf,sz); *len=sz; } break; case T_VARBINARY: { int sz=Read(uint16,bf); memcpy(buffer,bf+2,sz); *len=sz; } break; case T_DATE: { char db[11]; if(!sql_date_to_str((uint32*)bf,buffer)) { strcpy(buffer,"Error!"); } } break; case T_TIME: { int prec=sqlGetOutputColPrecision(stmt,i); if(!sql_time_to_str((uint32*)bf,prec,0,buffer)) { strcpy(buffer,"Error!"); } } break; case T_TIMESTAMP: { int prec=sqlGetOutputColPrecision(stmt,i); if(!sql_timestamp_to_str((uint32*)bf,prec,0,buffer)) { strcpy(buffer,"Error!"); } } break; case T_LONGVARCHAR: case T_LONGVARBINARY: { if(longreadlen==0) { *buffer=0; *len=0; } else if(!sqlColValueLong(stmt,i,0,0,longreadlen,buffer,len)) { strcpy(buffer,"Error!"); } } break; } } /* {{{ proto int ovrimos_fetch_into(int result_id, array result_array [, string how, [int rownumber]]) Fetch one result row into an array how: 'Next' (default), 'Prev', 'First', 'Last', 'Absolute' */ PHP_FUNCTION(ovrimos_fetch_into) { int numArgs; char *s_how; typedef enum { h_next=0, h_prev, h_first, h_last, h_absolute } h_type; h_type how=h_next; /* default */ sint32 rownum = 0; pval *arg_id, *arg_how=0, *arg_row=0, *arr, *tmp; SQLS stmt; int icol,colnb; bool ret; numArgs = ARG_COUNT(ht); switch(numArgs){ case 2: if (getParameters(ht, 2, &arg_id, &arr) == FAILURE) WRONG_PARAM_COUNT; break; case 3: if (getParameters(ht, 3, &arg_id, &arr, &arg_how) == FAILURE) WRONG_PARAM_COUNT; break; case 4: if (getParameters(ht, 4, &arg_id, &arr, &arg_how, &arg_row) == FAILURE) WRONG_PARAM_COUNT; break; default: WRONG_PARAM_COUNT; } convert_to_long(arg_id); stmt = (SQLS)(arg_id->value.lval-1); if(arg_how!=0) { if(arg_how->type!=IS_STRING) { php_error(E_WARNING, "Third argument not string in ovrimos_fetch_into()"); RETURN_FALSE; } s_how = arg_how->value.str.val; if(stricmp(s_how,"next")==0) { how=h_next; } else if(stricmp(s_how,"prev")==0) { how=h_prev; } else if(stricmp(s_how,"first")==0) { how=h_first; } else if(stricmp(s_how,"last")==0) { how=h_last; } else if(stricmp(s_how,"absolute")==0) { how=h_absolute; } else { php_error(E_WARNING, "Third argument not valid in ovrimos_fetch_into()"); RETURN_FALSE; } if(arg_row==0 && how==h_absolute) { php_error(E_WARNING, "Fourth argument is required for ABSOLUTE in ovrimos_fetch_into()"); RETURN_FALSE; } if(arg_row!=0) { convert_to_long(arg_row); rownum = arg_row->value.lval; switch(how) { case h_next: case h_prev: rownum--; /* Next 1 should send FUNC_CURSOR_NEXT(0) */ break; } } } if (!ParameterPassedByReference(ht, 2)){ /* 1-based?...*/ php_error(E_WARNING, "Array not passed by reference in call to ovrimos_fetch_into()"); RETURN_FALSE; } if (arr->type != IS_ARRAY){ if (array_init(arr) == FAILURE){ php_error(E_WARNING, "Can't convert to type Array"); RETURN_FALSE; } } switch(how) { case h_absolute: case h_first: ret=sqlCursorFirst(stmt,rownum); break; case h_last: ret=sqlCursorLast(stmt,rownum); break; case h_next: ret=sqlCursorNext(stmt,rownum); break; case h_prev: ret=sqlCursorPrev(stmt,rownum); break; } if(!ret) { RETURN_FALSE; } colnb=sqlGetOutputColNb(stmt); for(icol=0; icolrefcount=1; tmp->type = IS_STRING; tmp->value.str.len = 0; /* Produce column value in 'tmp' ...*/ column_to_string(stmt, icol, buffer,&len); tmp->value.str.len=len; tmp->value.str.val=estrndup(buffer,len); zend_hash_index_update(arr->value.ht, icol, &tmp, sizeof(pval *), NULL); } RETURN_TRUE; } /* }}} */ /* {{{ proto int ovrimos_fetch_row(int result_id [, int how, [int row_number]]) how: 'Next' (default), 'Prev', 'First', 'Last', 'Absolute' Fetch a row */ PHP_FUNCTION(ovrimos_fetch_row) { int numArgs, i; char *s_how; typedef enum { h_next=0, h_prev, h_first, h_last, h_absolute } h_type; h_type how=h_next; /* default */ sint32 rownum = 0; pval *arg_id, *arg_how=0, *arg_row=0; SQLS stmt; bool ret; numArgs = ARG_COUNT(ht); switch(numArgs){ case 1: if (getParameters(ht, 1, &arg_id) == FAILURE) WRONG_PARAM_COUNT; break; case 2: if (getParameters(ht, 2, &arg_id, &arg_how) == FAILURE) WRONG_PARAM_COUNT; break; case 3: if (getParameters(ht, 3, &arg_id, &arg_how, &arg_row) == FAILURE) WRONG_PARAM_COUNT; break; default: WRONG_PARAM_COUNT; } convert_to_long(arg_id); stmt = (SQLS)(arg_id->value.lval-1); if(arg_how!=0) { if(arg_how->type!=IS_STRING) { php_error(E_WARNING, "Second argument not string in ovrimos_fetch_row()"); RETURN_FALSE; } s_how = arg_how->value.str.val; if(stricmp(s_how,"next")==0) { how=h_next; } else if(stricmp(s_how,"prev")==0) { how=h_prev; } else if(stricmp(s_how,"first")==0) { how=h_first; } else if(stricmp(s_how,"last")==0) { how=h_last; } else if(stricmp(s_how,"absolute")==0) { how=h_absolute; } else { php_error(E_WARNING, "Second argument not valid in ovrimos_fetch_row()"); RETURN_FALSE; } if(arg_row==0 && how==4) { php_error(E_WARNING, "Third argument is required for ABSOLUTE in ovrimos_fetch_row()"); RETURN_FALSE; } if(arg_row!=0) { convert_to_long(arg_row); rownum = arg_row->value.lval; switch(how) { case h_next: case h_prev: rownum--; /* Next 1 should send FUNC_CURSOR_NEXT(0) */ break; } } } switch(how) { case h_absolute: case h_first: ret=sqlCursorFirst(stmt,rownum); break; case h_last: ret=sqlCursorLast(stmt,rownum); break; case h_next: ret=sqlCursorNext(stmt,rownum); break; case h_prev: ret=sqlCursorPrev(stmt,rownum); break; } if(!ret) { RETURN_FALSE; } RETURN_TRUE; } /* }}} */ /* {{{ proto string ovrimos_result(int result_id, mixed field) Get result data */ PHP_FUNCTION(ovrimos_result) { int numArgs = ARG_COUNT(ht); pval *arg_id, *arg_field; int icol, colnb; SQLS stmt; int len; char buffer[1024]; if (numArgs!=2 || getParameters(ht, 2, &arg_id, &arg_field) == FAILURE) WRONG_PARAM_COUNT; convert_to_long(arg_id); stmt = (SQLS)(arg_id->value.lval-1); colnb=sqlGetOutputColNb(stmt); if(arg_field->type==IS_STRING) { int i; for(i=0; ivalue.str.val,sqlGetOutputColName(stmt,i))) { icol=i; break; } } } else if(arg_field->type==IS_LONG) { icol=arg_field->value.lval-1; } else { php_error(E_WARNING, "Second argument neither number nor string in ovrimos_result()"); RETURN_FALSE; } if(icol<0 || icol>colnb) { php_error(E_WARNING, "Unknown column in ovrimos_result()"); RETURN_FALSE; } column_to_string(stmt, icol, buffer,&len); RETURN_STRINGL(buffer,len,1); } /* }}} */ /* {{{ proto int ovrimos_result_all(int result_id [, string format]) Print result as HTML table */ PHP_FUNCTION(ovrimos_result_all) { long fetched=0; pval *arg1, *arg2; int numArgs; SQLS stmt; int icol, colnb; char buffer[1024]; int len; numArgs = ARG_COUNT(ht); if (numArgs == 1){ if (getParameters(ht, 1, &arg1) == FAILURE) WRONG_PARAM_COUNT; } else { if (getParameters(ht, 2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; } convert_to_long(arg1); stmt = (SQLS)(arg1->value.lval-1); colnb=sqlGetOutputColNb(stmt); /* Start table tag */ if (numArgs == 1){ php_printf(""); } else { convert_to_string(arg2); php_printf("
",arg2->value.str.val); } for(icol = 0; icol%s", sqlGetOutputColName(stmt,icol)); } php_printf("\n"); if(sqlCursorFirst(stmt,0)) { do { fetched++; php_printf(""); for(icol=0; icol%s",buffer); } php_printf("\n"); } while(sqlCursorNext(stmt,0)); } php_printf("
\n"); RETURN_LONG(fetched); } /* }}} */ /* {{{ proto int ovrimos_free_result(int result_id) Free resources associated with a result */ PHP_FUNCTION(ovrimos_free_result) { pval *arg1; SQLS stmt; if ( getParameters(ht, 1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long(arg1); stmt=(SQLS)(arg1->value.lval-1); sqlCloseCursor(stmt); RETURN_TRUE; } /* }}} */ /* {{{ proto int ovrimos_num_rows(int result_id) Get number of rows in a result */ PHP_FUNCTION(ovrimos_num_rows) { uint32 rows; pval *arg1; SQLS stmt; if ( getParameters(ht, 1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long(arg1); stmt=(SQLS)(arg1->value.lval-1); sqlGetRowCount(stmt, &rows); RETURN_LONG(rows); } /* }}} */ /* {{{ proto int ovrimos_num_fields(int result_id) Get number of columns in a result */ PHP_FUNCTION(ovrimos_num_fields) { pval *arg1; SQLS stmt; if ( getParameters(ht, 1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long(arg1); stmt=(SQLS)(arg1->value.lval-1); RETURN_LONG(sqlGetOutputColNb(stmt)); } /* }}} */ /* {{{ proto string ovrimos_field_name(int result_id, int field_number) Get a column name */ PHP_FUNCTION(ovrimos_field_name) { pval *arg1, *arg2; SQLS stmt; int field; if (getParameters(ht, 2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long(arg1); convert_to_long(arg2); stmt=(SQLS)(arg1->value.lval-1); if (arg2->value.lval < 1){ php_error(E_WARNING, "Field numbering starts at 1! in call to ovrimos_field_name()"); RETURN_FALSE; } field=arg2->value.lval-1; if (field>=sqlGetOutputColNb(stmt)){ php_error(E_WARNING, "No field at this index (%d) in call to ovrimos_field_name()",field); RETURN_FALSE; } RETURN_STRING((char*)sqlGetOutputColName(stmt,field),1); } /* }}} */ /* {{{ proto string ovrimos_field_type(int result_id, int field_number) Get the datatype of a column */ PHP_FUNCTION(ovrimos_field_type) { pval *arg1, *arg2; SQLS stmt; int field; if (getParameters(ht, 2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long(arg1); convert_to_long(arg2); stmt=(SQLS)(arg1->value.lval-1); if (arg2->value.lval < 1){ php_error(E_WARNING, "Field numbering starts at 1! in call to ovrimos_field_type()"); RETURN_FALSE; } field=arg2->value.lval-1; if (field>=sqlGetOutputColNb(stmt)){ php_error(E_WARNING, "No field at this index (%d) in call to ovrimos_field_type()",field); RETURN_FALSE; } RETURN_LONG(sqlGetOutputColType(stmt,field)); } /* }}} */ /* {{{ proto int ovrimos_field_len(int result_id, int field_number) Get the length of a column */ PHP_FUNCTION(ovrimos_field_len) { pval *arg1, *arg2; SQLS stmt; int field; if (getParameters(ht, 2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long(arg1); convert_to_long(arg2); stmt=(SQLS)(arg1->value.lval-1); if (arg2->value.lval < 1){ php_error(E_WARNING, "Field numbering starts at 1! in call to ovrimos_field_len()"); RETURN_FALSE; } field=arg2->value.lval-1; if (field>=sqlGetOutputColNb(stmt)){ php_error(E_WARNING, "No field at this index (%d) in call to ovrimos_field_len()",field); RETURN_FALSE; } switch(sqlGetOutputColType(stmt,field)) { case T_LONGVARCHAR: case T_LONGVARBINARY: RETURN_LONG(longreadlen); default: RETURN_LONG(sqlGetOutputColLength(stmt,field)); } } /* }}} */ /* {{{ proto int ovrimos_field_num(int result_id, string field_name) Return column number */ PHP_FUNCTION(ovrimos_field_num) { pval *arg1, *arg2; SQLS stmt; int i,n; if (getParameters(ht, 2, &arg1, &arg2) == FAILURE || arg2->type!=IS_STRING) { WRONG_PARAM_COUNT; } convert_to_long(arg1); stmt=(SQLS)(arg1->value.lval-1); n=sqlGetOutputColNb(stmt); for(i=0; ivalue.str.val,sqlGetOutputColName(stmt,i))) { RETURN_LONG(i+1); } } RETURN_FALSE; } /* }}} */ #if 0 /* {{{ proto int ovrimos_autocommit(int connection_id, int OnOff) Toggle autocommit mode There can be problems with pconnections!*/ PHP_FUNCTION(ovrimos_autocommit) { } /* }}} */ #endif /* {{{ proto int ovrimos_commit(int connection_id) Commit an ovrimos transaction */ PHP_FUNCTION(ovrimos_commit) { pval *arg1; SQLH conn; if(ARG_COUNT(ht)!=1 || getParameters(ht,1,&arg1)==FAILURE || arg1->type!=IS_LONG) { WRONG_PARAM_COUNT; } conn=(SQLH)(arg1->value.lval-1); if(!sqlTransactCommit(conn)) { RETURN_FALSE; } RETURN_TRUE; } /* }}} */ /* {{{ proto int ovrimos_rollback(int connection_id) Rollback a transaction */ PHP_FUNCTION(ovrimos_rollback) { pval *arg1; SQLH conn; if(ARG_COUNT(ht)!=1 || getParameters(ht,1,&arg1)==FAILURE || arg1->type!=IS_LONG) { WRONG_PARAM_COUNT; } conn=(SQLH)(arg1->value.lval-1); if(!sqlTransactRollback(conn)) { RETURN_FALSE; } RETURN_TRUE; } /* }}} */ #if 0 /* {{{ proto int ovrimos_setoption(int conn_id|result_id, int which, int option, int value) Sets connection or statement options */ PHP_FUNCTION(ovrimos_setoption) { } /* }}} */ #endif function_entry ovrimos_functions[] = { /* PHP_FE(ovrimos_setoption, NULL)*/ /* PHP_FE(ovrimos_autocommit, NULL)*/ PHP_FE(ovrimos_close, NULL) PHP_FE(ovrimos_close_all, NULL) PHP_FE(ovrimos_commit, NULL) PHP_FE(ovrimos_connect, NULL) PHP_FE(ovrimos_cursor, NULL) PHP_FE(ovrimos_exec, NULL) PHP_FE(ovrimos_prepare, NULL) PHP_FE(ovrimos_execute, NULL) PHP_FE(ovrimos_fetch_row, NULL) PHP_FE(ovrimos_fetch_into, NULL) PHP_FE(ovrimos_field_len, NULL) PHP_FE(ovrimos_field_name, NULL) PHP_FE(ovrimos_field_type, NULL) PHP_FE(ovrimos_field_num, NULL) PHP_FE(ovrimos_free_result, NULL) PHP_FE(ovrimos_num_fields, NULL) PHP_FE(ovrimos_num_rows, NULL) PHP_FE(ovrimos_result, NULL) PHP_FE(ovrimos_result_all, NULL) PHP_FE(ovrimos_rollback, NULL) /* PHP_FE(ovrimos_binmode, NULL)*/ PHP_FE(ovrimos_longreadlen, NULL) PHP_FALIAS(ovrimos_do, ovrimos_exec, NULL) { NULL, NULL, NULL } }; zend_module_entry ovrimos_module_entry = { "Ovrimos", ovrimos_functions, NULL, NULL, NULL, NULL, PHP_MINFO(ovrimos), STANDARD_MODULE_PROPERTIES }; DLEXPORT zend_module_entry *get_module() { return &ovrimos_module_entry; };