⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sql_relay.c

📁 适合于Unix/Linux下的一个持久数据库连接池
💻 C
📖 第 1 页 / 共 4 页
字号:
	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 + -