📄 sql_relay.c
字号:
ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { r=cursor->openCachedResultSet((*filename)->value.str.val); RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_colcount) { zval **sqlrcur; uint32_t r; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { r=cursor->colCount(); RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_rowcount) { zval **sqlrcur; uint64_t r; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { r=cursor->rowCount(); RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_totalrows) { zval **sqlrcur; uint64_t r; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { r=cursor->totalRows(); RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_affectedrows) { zval **sqlrcur; uint64_t r; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { r=cursor->affectedRows(); RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_firstrowindex) { zval **sqlrcur; uint64_t r; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { r=cursor->firstRowIndex(); RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_endofresultset) { zval **sqlrcur; bool r; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { r=cursor->endOfResultSet(); RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_errormessage) { zval **sqlrcur; const char *r; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { r=cursor->errorMessage(); if (r) { RETURN_STRING(const_cast<char *>(r),1); } } RETURN_NULL();}DLEXPORT ZEND_FUNCTION(sqlrcur_getnullsasemptystrings) { zval **sqlrcur; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { cursor->getNullsAsEmptyStrings(); }}DLEXPORT ZEND_FUNCTION(sqlrcur_getnullsasnulls) { zval **sqlrcur; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { cursor->getNullsAsNulls(); }}DLEXPORT ZEND_FUNCTION(sqlrcur_getfield) { zval **sqlrcur,**row,**col; const char *r=NULL; uint32_t rl; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3,&sqlrcur,&row,&col) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(row); sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { if (Z_TYPE_PP(col)==IS_LONG) { convert_to_long_ex(col); r=cursor->getField((*row)->value.lval,(*col)->value.lval); rl=cursor->getFieldLength((*row)->value.lval,(*col)->value.lval); } else if (Z_TYPE_PP(col)==IS_STRING) { convert_to_string_ex(col); r=cursor->getField((*row)->value.lval,(*col)->value.str.val); rl=cursor->getFieldLength((*row)->value.lval,(*col)->value.str.val); } if (r) { RETURN_STRINGL(const_cast<char *>(r),rl,1); } } RETURN_NULL();}DLEXPORT ZEND_FUNCTION(sqlrcur_getfieldaslong) { zval **sqlrcur,**row,**col; int64_t r=0; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3,&sqlrcur,&row,&col) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(row); sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { if (Z_TYPE_PP(col)==IS_LONG) { convert_to_long_ex(col); r=cursor->getFieldAsInteger((*row)->value.lval,(*col)->value.lval); } else if (Z_TYPE_PP(col)==IS_STRING) { convert_to_string_ex(col); r=cursor->getFieldAsInteger((*row)->value.lval,(*col)->value.str.val); } RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getfieldasdouble) { zval **sqlrcur,**row,**col; double r=0.0; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3,&sqlrcur,&row,&col) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(row); sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { if (Z_TYPE_PP(col)==IS_LONG) { convert_to_long_ex(col); r=cursor->getFieldAsDouble((*row)->value.lval,(*col)->value.lval); } else if (Z_TYPE_PP(col)==IS_STRING) { convert_to_string_ex(col); r=cursor->getFieldAsDouble((*row)->value.lval,(*col)->value.str.val); } RETURN_DOUBLE(r); } RETURN_DOUBLE(0.0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getfieldlength) { zval **sqlrcur,**row,**col; uint32_t r=0; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3,&sqlrcur,&row,&col) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(row); sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { if (Z_TYPE_PP(col)==IS_LONG) { convert_to_long_ex(col); r=cursor->getFieldLength((*row)->value.lval,(*col)->value.lval); } else if (Z_TYPE_PP(col)==IS_STRING) { convert_to_string_ex(col); r=cursor->getFieldLength((*row)->value.lval,(*col)->value.str.val); } RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getrow) { zval **sqlrcur,**row; const char * const *r; uint32_t *l; uint32_t i; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2,&sqlrcur,&row) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(row); sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (!cursor) { RETURN_FALSE; } r=cursor->getRow((*row)->value.lval); l=cursor->getRowLengths((*row)->value.lval); if (!r) { RETURN_FALSE; } if (array_init(return_value) == FAILURE) { RETURN_FALSE; } for (i=0; i<cursor->colCount(); i++) { if (!r[i]) { // using add_next_index_unset because add_assoc_null // isn't defined in older php add_next_index_unset(return_value); } else { add_next_index_stringl(return_value,const_cast<char *>(r[i]),l[i],1); } }}DLEXPORT ZEND_FUNCTION(sqlrcur_getrowassoc) { zval **sqlrcur,**row; const char * const *r; uint32_t *l; const char * const *rC; uint32_t i; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2,&sqlrcur,&row) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(row); sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (!cursor) { RETURN_FALSE; } rC=cursor->getColumnNames(); if (!rC) { RETURN_FALSE; } r=cursor->getRow((*row)->value.lval); l=cursor->getRowLengths((*row)->value.lval); if (!r) { RETURN_FALSE; } if (array_init(return_value) == FAILURE) { RETURN_FALSE; } for (i=0; i<cursor->colCount(); i++) { if (!r[i]) { // using add_assoc_unset because add_assoc_null isn't // defined in older php add_assoc_unset(return_value,const_cast<char *>(rC[i])); } else { add_assoc_stringl(return_value,const_cast<char *>(rC[i]),const_cast<char *>(r[i]),l[i],1); } }}DLEXPORT ZEND_FUNCTION(sqlrcur_getrowlengths) { zval **sqlrcur,**row; uint32_t *r; uint32_t i; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2,&sqlrcur,&row) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(row); sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (!cursor) { RETURN_FALSE; } r=cursor->getRowLengths((*row)->value.lval); if (!r) { RETURN_FALSE; } if (array_init(return_value) == FAILURE) { RETURN_FALSE; } for (i=0; i<cursor->colCount(); i++) { add_next_index_long(return_value,r[i]); }}DLEXPORT ZEND_FUNCTION(sqlrcur_getrowlengthsassoc) { zval **sqlrcur,**row; uint32_t *r; const char * const *rC; uint32_t i; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2,&sqlrcur,&row) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(row); sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (!cursor) { RETURN_FALSE; } rC=cursor->getColumnNames(); if (!rC) { RETURN_FALSE; } r=cursor->getRowLengths((*row)->value.lval); if (!r) { RETURN_FALSE; } if (array_init(return_value) == FAILURE) { RETURN_FALSE; } for (i=0; i<cursor->colCount(); i++) { add_assoc_long(return_value,const_cast<char *>(rC[i]),r[i]); }}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnnames) { zval **sqlrcur; const char * const *r; uint32_t i; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&sqlrcur) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (!cursor) { RETURN_FALSE; } r=cursor->getColumnNames(); if (!r) { RETURN_FALSE; } if (array_init(return_value) == FAILURE) { RETURN_FALSE; } for (i=0; i<cursor->colCount(); i++) { add_next_index_string(return_value,const_cast<char *>(r[i]),1); }}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnname) { zval **sqlrcur,**col; const char *r; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(col); sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { r=cursor->getColumnName((*col)->value.lval); if (r) { RETURN_STRING(const_cast<char *>(r),1); } } RETURN_FALSE;}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumntype) { zval **sqlrcur,**col; const char *r=NULL; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { if (Z_TYPE_PP(col)==IS_LONG) { convert_to_long_ex(col); r=cursor->getColumnType((*col)->value.lval); } else if (Z_TYPE_PP(col)==IS_STRING) { convert_to_string_ex(col); r=cursor->getColumnType((*col)->value.str.val); } if (r) { RETURN_STRING(const_cast<char *>(r),1); } } RETURN_FALSE;}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnlength) { zval **sqlrcur,**col; uint32_t r=0; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { if (Z_TYPE_PP(col)==IS_LONG) { convert_to_long_ex(col); r=cursor->getColumnLength((*col)->value.lval); } else if (Z_TYPE_PP(col)==IS_STRING) { convert_to_string_ex(col); r=cursor->getColumnLength((*col)->value.str.val); } RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnprecision) { zval **sqlrcur,**col; uint32_t r=0; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { if (Z_TYPE_PP(col)==IS_LONG) { convert_to_long_ex(col); r=cursor->getColumnPrecision((*col)->value.lval); } else if (Z_TYPE_PP(col)==IS_STRING) { convert_to_string_ex(col); r=cursor->getColumnPrecision((*col)->value.str.val); } RETURN_LONG(r); } RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnscale) { zval **sqlrcur,**col; uint32_t r=0; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) { WRONG_PARAM_COUNT; } sqlrcursor *cursor=NULL; ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor); if (cursor) { if (Z_TYPE_PP(col)==IS_LONG) { convert_to_long_ex(col); r=cursor->getColumnScale((*col)->value.lval); } else if (Z_TYPE_PP(col)==IS_STRING) { convert_to_string_ex(col); r=cursor->getColumnScale((*col)->value.str.val); } RETURN_LONG(r);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -