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

📄 dbx.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
	MOVE_RETURNED_TO_RV(&return_value, rv);}/* }}} *//* *      dbx functions that are database independent... like sorting result_objects! *//* {{{ proto int dbx_compare(array row_x, array row_y, string columnname [, int flags])   Returns row_y[columnname] - row_x[columnname], converted to -1, 0 or 1 */ZEND_FUNCTION(dbx_compare){	int min_number_of_arguments=3;	int max_number_of_arguments=4;	int number_of_arguments=-1;	long comparison_direction=DBX_CMP_ASC;	long comparison_type=DBX_CMP_NATIVE;	double dtemp;	long ltemp;	zval **arguments[4];	zval **zv_a;	zval **zv_b;	int result=0;	number_of_arguments=ZEND_NUM_ARGS();	if (number_of_arguments<min_number_of_arguments || number_of_arguments>max_number_of_arguments || zend_get_parameters_array_ex(number_of_arguments, arguments) == FAILURE) {		WRONG_PARAM_COUNT;	}	if (Z_TYPE_PP(arguments[0]) != IS_ARRAY	|| Z_TYPE_PP(arguments[1]) != IS_ARRAY) {		zend_error(E_WARNING, "Wrong argument type for compare");		RETURN_LONG(0);	}	convert_to_string_ex(arguments[2]); /* field name */	comparison_type = DBX_CMP_NATIVE;	comparison_direction = DBX_CMP_ASC;	if (number_of_arguments>3) {		convert_to_long_ex(arguments[3]); /* comparison type and direction*/		/* direction */		if (Z_LVAL_PP(arguments[3]) & DBX_CMP_DESC) {			comparison_direction=DBX_CMP_DESC;		}		if (Z_LVAL_PP(arguments[3]) & DBX_CMP_ASC) {			comparison_direction=DBX_CMP_ASC;		}		/* type */		if (Z_LVAL_PP(arguments[3]) & DBX_CMP_NUMBER) {			comparison_type=DBX_CMP_NUMBER;		}		if (Z_LVAL_PP(arguments[3]) & DBX_CMP_TEXT) {			comparison_type=DBX_CMP_TEXT;		}		if (Z_LVAL_PP(arguments[3]) & DBX_CMP_NATIVE) {			comparison_type=DBX_CMP_NATIVE;		}	}	if (zend_hash_find(Z_ARRVAL_PP(arguments[0]), Z_STRVAL_PP(arguments[2]), Z_STRLEN_PP(arguments[2])+1, (void **) &zv_a)==FAILURE	|| zend_hash_find(Z_ARRVAL_PP(arguments[1]), Z_STRVAL_PP(arguments[2]), Z_STRLEN_PP(arguments[2])+1, (void **) &zv_b)==FAILURE)  {		zend_error(E_WARNING, "Field '%s' not available in result-object", Z_STRVAL_PP(arguments[2]));		RETURN_LONG(0);	}	switch (comparison_type) {		case DBX_CMP_TEXT:			convert_to_string_ex(zv_a);			convert_to_string_ex(zv_b);			break;		case DBX_CMP_NUMBER:			convert_to_double_ex(zv_a);			convert_to_double_ex(zv_b);			break;	}	switch (Z_TYPE_PP(zv_a)) {		case IS_NULL:			result=0;			break;		case IS_BOOL:		case IS_LONG:		case IS_CONSTANT:			ltemp = Z_LVAL_PP(zv_a) - Z_LVAL_PP(zv_b);			result = (ltemp==0?0: (ltemp>0?1:-1));			break;		case IS_DOUBLE:			dtemp = (Z_DVAL_PP(zv_a) - Z_DVAL_PP(zv_b));			result = (dtemp==0?0: (dtemp>0?1:-1));			break;		case IS_STRING:			ltemp = strcmp(Z_STRVAL_PP(zv_a), Z_STRVAL_PP(zv_b));			result = (ltemp==0?0: (ltemp>0?1:-1));			break;		default: result=0;	}	if (comparison_direction==DBX_CMP_DESC) RETURN_LONG(-result);	RETURN_LONG(result);}/* }}} *//* {{{ proto int dbx_sort(object dbx_result, string compare_function_name)   Returns 0 on failure, 1 on success */ZEND_FUNCTION(dbx_sort){	int number_of_arguments=2;	zval **arguments[2];	zval **zval_data;	zval *returned_zval;	if (ZEND_NUM_ARGS() !=number_of_arguments || zend_get_parameters_array_ex(number_of_arguments, arguments) == FAILURE) {		WRONG_PARAM_COUNT;	}	if (Z_TYPE_PP(arguments[0]) != IS_OBJECT	|| Z_TYPE_PP(arguments[1]) != IS_STRING) {		zend_error(E_WARNING, "Wrong argument type for sort");		RETURN_LONG(0);	}	if (zend_hash_find(Z_OBJPROP_PP(arguments[0]), "data", 5, (void **) &zval_data)==FAILURE	|| Z_TYPE_PP(zval_data) != IS_ARRAY) {		zend_error(E_WARNING, "Wrong argument type for sort");		RETURN_LONG(0);	}	arguments[0] = zval_data;	dbx_call_any_function(INTERNAL_FUNCTION_PARAM_PASSTHRU, "usort", &returned_zval, number_of_arguments, arguments);	zval_ptr_dtor(&returned_zval);		RETURN_LONG(1);}/* }}} *//***********************************//* * switch_dbx functions */int switch_dbx_connect(zval **rv, zval **host, zval **db, zval **username, zval **password, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns connection handle as resource on success or 0 as long on failure */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_connect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_connect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_connect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_connect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_connect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_OCI8:  return dbx_oci8_connect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_SYBASECT: return dbx_sybasect_connect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_connect: not supported in this module");	return 0;}int switch_dbx_pconnect(zval **rv, zval **host, zval **db, zval **username, zval **password, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns persistent connection handle as resource on success or 0 as long on failure */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_pconnect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_pconnect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_pconnect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_pconnect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_pconnect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_OCI8:  return dbx_oci8_pconnect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_SYBASECT: return dbx_sybasect_pconnect(rv, host, db, username, password, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_pconnect: not supported in this module");	return 0;}int switch_dbx_close(zval **rv, zval **dbx_handle, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns 1 as long on success or 0 as long on failure */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_close(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_close(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_close(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_close(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_close(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_OCI8:  return dbx_oci8_close(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_SYBASECT: return dbx_sybasect_close(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_close: not supported in this module");	return 0;}int switch_dbx_query(zval **rv, zval **dbx_handle, zval **db_name, zval **sql_statement, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns 1 as long or result identifier as resource on success or 0 as long on failure */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_query(rv, dbx_handle, db_name, sql_statement, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_query(rv, dbx_handle, db_name, sql_statement, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_query(rv, dbx_handle, db_name, sql_statement, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_query(rv, dbx_handle, db_name, sql_statement, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_query(rv, dbx_handle, db_name, sql_statement, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_OCI8:  return dbx_oci8_query(rv, dbx_handle, db_name, sql_statement, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_SYBASECT: return dbx_sybasect_query(rv, dbx_handle, db_name, sql_statement, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_query: not supported in this module");	return 0;}int switch_dbx_getcolumncount(zval **rv, zval **result_handle, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns column-count as long on success or 0 as long on failure */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_getcolumncount(rv, result_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_getcolumncount(rv, result_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_getcolumncount(rv, result_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_getcolumncount(rv, result_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_getcolumncount(rv, result_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_OCI8:  return dbx_oci8_getcolumncount(rv, result_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_SYBASECT: return dbx_sybasect_getcolumncount(rv, result_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_getcolumncount: not supported in this module");	return 0;}int switch_dbx_getcolumnname(zval **rv, zval **result_handle, long column_index, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns column-name as string on success or 0 as long on failure */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_getcolumnname(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_getcolumnname(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_getcolumnname(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_getcolumnname(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_getcolumnname(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_OCI8:  return dbx_oci8_getcolumnname(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_SYBASECT: return dbx_sybasect_getcolumnname(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_getcolumnname: not supported in this module");	return 0;}int switch_dbx_getcolumntype(zval **rv, zval **result_handle, long column_index, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns column-type as string on success or 0 as long on failure */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_getcolumntype(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_getcolumntype(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_getcolumntype(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_getcolumntype(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_getcolumntype(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_OCI8:  return dbx_oci8_getcolumntype(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_SYBASECT: return dbx_sybasect_getcolumntype(rv, result_handle, column_index, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_getcolumntype: not supported in this module");	return 0;}int switch_dbx_getrow(zval **rv, zval **result_handle, long row_number, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns array[0..columncount-1] as strings on success or 0 as long on failure */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_getrow(rv, result_handle, row_number, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_getrow(rv, result_handle, row_number, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_getrow(rv, result_handle, row_number, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_getrow(rv, result_handle, row_number, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_getrow(rv, result_handle, row_number, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_OCI8:  return dbx_oci8_getrow(rv, result_handle, row_number, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_SYBASECT: return dbx_sybasect_getrow(rv, result_handle, row_number, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_getrow: not supported in this module");	return 0;}int switch_dbx_error(zval **rv, zval **dbx_handle, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns string */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_error(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_error(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_error(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_error(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_error(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);		/* case DBX_OCI8:  return dbx_oci8_error(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU); */		case DBX_SYBASECT: return dbx_sybasect_error(rv, dbx_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_error: not supported in this module");	return 0;}int switch_dbx_esc(zval **rv, zval **dbx_handle, zval **string, INTERNAL_FUNCTION_PARAMETERS, zval **dbx_module){	/* returns escaped string */	switch (Z_LVAL_PP(dbx_module)) {		case DBX_MYSQL: return dbx_mysql_esc(rv, dbx_handle, string, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_ODBC:  return dbx_odbc_esc(rv, dbx_handle, string, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_PGSQL: return dbx_pgsql_esc(rv, dbx_handle, string, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_MSSQL: return dbx_mssql_esc(rv, dbx_handle, string, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_FBSQL: return dbx_fbsql_esc(rv, dbx_handle, string, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_OCI8:  return dbx_oci8_esc(rv, dbx_handle, string, INTERNAL_FUNCTION_PARAM_PASSTHRU);		case DBX_SYBASECT: return dbx_sybasect_esc(rv, dbx_handle, string, INTERNAL_FUNCTION_PARAM_PASSTHRU);	}	zend_error(E_WARNING, "dbx_esc: not supported in this module");	return 0;}/* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -