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

📄 php_sybase_db.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* {{{ proto string sybase_get_last_message(void)   Returns the last message from server (over min_message_severity) */PHP_FUNCTION(sybase_get_last_message){	RETURN_STRING(php_sybase_module.server_message,1);}/* }}} *//* {{{ proto int sybase_num_rows(int result)   Get number of rows in result */PHP_FUNCTION(sybase_num_rows){	zval **result_index;	int type,id;	sybase_result *result;		if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &result_index) == FAILURE) {		WRONG_PARAM_COUNT;	}		convert_to_long_ex(result_index);	id = Z_LVAL_PP(result_index);		result = (sybase_result *) zend_list_find(id,&type);	if (type!=php_sybase_module.le_result) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"%d is not a Sybase result index",id);		RETURN_FALSE;	}			Z_LVAL_P(return_value) = result->num_rows;	Z_TYPE_P(return_value) = IS_LONG;}/* }}} *//* {{{ proto int sybase_num_fields(int result)   Get number of fields in result */PHP_FUNCTION(sybase_num_fields){	zval **result_index;	int type,id;	sybase_result *result;		if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &result_index) == FAILURE) {		WRONG_PARAM_COUNT;	}		convert_to_long_ex(result_index);	id = Z_LVAL_PP(result_index);		result = (sybase_result *) zend_list_find(id,&type);	if (type!=php_sybase_module.le_result) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"%d is not a Sybase result index",id);		RETURN_FALSE;	}			Z_LVAL_P(return_value) = result->num_fields;	Z_TYPE_P(return_value) = IS_LONG;}/* }}} *//* {{{ proto array sybase_fetch_row(int result)   Get row as enumerated array */PHP_FUNCTION(sybase_fetch_row){	zval **sybase_result_index;	int type,i,id;	sybase_result *result;	pval *field_content;	if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &sybase_result_index)==FAILURE) {		WRONG_PARAM_COUNT;	}		convert_to_long_ex(sybase_result_index);	id = Z_LVAL_PP(sybase_result_index);		result = (sybase_result *) zend_list_find(id,&type);	if (type!=php_sybase_module.le_result) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"%d is not a Sybase result index",id);		RETURN_FALSE;	}		if (result->cur_row >= result->num_rows) {		RETURN_FALSE;	}		array_init(return_value);	for (i=0; i<result->num_fields; i++) {		ZVAL_ADDREF(result->data[result->cur_row][i]);		zend_hash_index_update(Z_ARRVAL_P(return_value), i, (void *) &result->data[result->cur_row][i], sizeof(pval *), NULL);	}	result->cur_row++;}/* }}} */static void php_sybase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS){	zval **sybase_result_index;	sybase_result *result;	int type;	int i;		if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &sybase_result_index) == FAILURE) {		WRONG_PARAM_COUNT;	}		convert_to_long_ex(sybase_result_index);	result = (sybase_result *) zend_list_find(Z_LVAL_PP(sybase_result_index),&type);		if (type!=php_sybase_module.le_result) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"%ld is not a Sybase result index", Z_LVAL_PP(sybase_result_index));		RETURN_FALSE;	}		if (result->cur_row >= result->num_rows) {		RETURN_FALSE;	}		array_init(return_value);		for (i=0; i<result->num_fields; i++) {		ZVAL_ADDREF(result->data[result->cur_row][i]);		zend_hash_index_update(Z_ARRVAL_P(return_value), i, (void *) &result->data[result->cur_row][i], sizeof(pval *), NULL);		ZVAL_ADDREF(result->data[result->cur_row][i]);		zend_hash_update(Z_ARRVAL_P(return_value), result->fields[i].name, strlen(result->fields[i].name)+1, (void *) &result->data[result->cur_row][i], sizeof(pval  *), NULL);	}	result->cur_row++;}/* {{{ proto object sybase_fetch_object(int result)   Fetch row as object */PHP_FUNCTION(sybase_fetch_object){	php_sybase_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU);	if (Z_TYPE_P(return_value)==IS_ARRAY) {		Z_TYPE_P(return_value)=IS_OBJECT;		Z_OBJPROP_P(return_value) = Z_ARRVAL_P(return_value);		Z_OBJCE_P(return_value) = ZEND_STANDARD_CLASS_DEF_PTR;	}}/* }}} *//* {{{ proto array sybase_fetch_array(int result)   Fetch row as array */PHP_FUNCTION(sybase_fetch_array){	php_sybase_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU);}/* }}} *//* {{{ proto bool sybase_data_seek(int result, int offset)   Move internal row pointer */PHP_FUNCTION(sybase_data_seek){	zval **sybase_result_index, **offset;	int type,id;	sybase_result *result;	if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2, &sybase_result_index, &offset) == FAILURE) {		WRONG_PARAM_COUNT;	}		convert_to_long_ex(sybase_result_index);	id = Z_LVAL_PP(sybase_result_index);		result = (sybase_result *) zend_list_find(id,&type);	if (type!=php_sybase_module.le_result) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"%d is not a Sybase result index",id);		RETURN_FALSE;	}	convert_to_long_ex(offset);	if (Z_LVAL_PP(offset)<0 || Z_LVAL_PP(offset)>=result->num_rows) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"Sybase:  Bad row offset");		RETURN_FALSE;	}		result->cur_row = Z_LVAL_PP(offset);	RETURN_TRUE;}/* }}} */static char *php_sybase_get_field_name(int type){	switch (type) {		case SYBBINARY:		case SYBVARBINARY:			return "blob";			break;		case SYBCHAR:		case SYBVARCHAR:		case SYBTEXT:			return "string";		case SYBDATETIME:		case SYBDATETIME4:		case SYBDATETIMN:			return "datetime";			break;		case SYBDECIMAL:		case SYBFLT8:		case SYBFLTN:		case SYBREAL:		case SYBNUMERIC:			return "real";			break;		case SYBINT1:		case SYBINT2:		case SYBINT4:		case SYBINTN:			return "int";			break;		case SYBMONEY:		case SYBMONEY4:		case SYBMONEYN:			return "money";			break;		case SYBBIT:			return "bit";			break;		case SYBIMAGE:			return "image";			break;		default:			return "unknown";			break;	}}/* {{{ proto object sybase_fetch_field(int result [, int offset])   Get field information */PHP_FUNCTION(sybase_fetch_field){	zval **sybase_result_index, **offset;	int type,id,field_offset;	sybase_result *result;	switch (ZEND_NUM_ARGS()) {		case 1:			if (zend_get_parameters_ex(1, &sybase_result_index) == FAILURE) {				RETURN_FALSE;			}			field_offset=-1;			break;		case 2:			if (zend_get_parameters_ex(2, &sybase_result_index, &offset) == FAILURE) {				RETURN_FALSE;			}			convert_to_long_ex(offset);			field_offset = Z_LVAL_PP(offset);			break;		default:			WRONG_PARAM_COUNT;			break;	}		convert_to_long_ex(sybase_result_index);	id = Z_LVAL_PP(sybase_result_index);		result = (sybase_result *) zend_list_find(id,&type);	if (type!=php_sybase_module.le_result) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"%d is not a Sybase result index",id);		RETURN_FALSE;	}		if (field_offset==-1) {		field_offset = result->cur_field;		result->cur_field++;	}		if (field_offset<0 || field_offset >= result->num_fields) {		if (ZEND_NUM_ARGS()==2) { /* field specified explicitly */			php_error_docref(NULL TSRMLS_CC, E_WARNING,"Sybase:  Bad column offset");		}		RETURN_FALSE;	}	object_init(return_value);	add_property_string(return_value, "name",result->fields[field_offset].name, 1);	add_property_long(return_value, "max_length",result->fields[field_offset].max_length);	add_property_string(return_value, "column_source",result->fields[field_offset].column_source, 1);	add_property_long(return_value, "numeric", result->fields[field_offset].numeric);	add_property_string(return_value, "type", php_sybase_get_field_name(Z_TYPE(result->fields[field_offset])), 1);}/* }}} *//* {{{ proto bool sybase_field_seek(int result, int offset)   Set field offset */PHP_FUNCTION(sybase_field_seek){	zval **sybase_result_index, **offset;	int type,id,field_offset;	sybase_result *result;	if (ZEND_NUM_ARGS() !=2 || zend_get_parameters_ex(2, &sybase_result_index, &offset) == FAILURE) {		WRONG_PARAM_COUNT;	}		convert_to_long_ex(sybase_result_index);	id = Z_LVAL_PP(sybase_result_index);		result = (sybase_result *) zend_list_find(id,&type);	if (type!=php_sybase_module.le_result) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"%d is not a Sybase result index",id);		RETURN_FALSE;	}		convert_to_long_ex(offset);	field_offset = Z_LVAL_PP(offset);		if (field_offset<0 || field_offset >= result->num_fields) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"Sybase:  Bad column offset");		RETURN_FALSE;	}	result->cur_field = field_offset;	RETURN_TRUE;}/* }}} *//* {{{ proto string sybase_result(int result, int row, mixed field)   Get result data */PHP_FUNCTION(sybase_result){	zval **row, **field, **sybase_result_index;	int id,type,field_offset=0;	sybase_result *result;		if (ZEND_NUM_ARGS() !=3 || zend_get_parameters_ex(3, &sybase_result_index, &row, &field) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_long_ex(sybase_result_index);	id = Z_LVAL_PP(sybase_result_index);		result = (sybase_result *) zend_list_find(id,&type);	if (type!=php_sybase_module.le_result) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"%d is not a Sybase result index",id);		RETURN_FALSE;	}		convert_to_long_ex(row);	if (Z_LVAL_PP(row)<0 || Z_LVAL_PP(row)>=result->num_rows) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"Sybase:  Bad row offset (%ld)", Z_LVAL_PP(row));		RETURN_FALSE;	}	switch(Z_TYPE_PP(field)) {		case IS_STRING: {			int i;			for (i=0; i<result->num_fields; i++) {				if (!strcasecmp(result->fields[i].name,Z_STRVAL_PP(field))) {					field_offset = i;					break;				}			}			if (i>=result->num_fields) { /* no match found */				php_error_docref(NULL TSRMLS_CC, E_WARNING,"Sybase:  %s field not found in result",Z_STRVAL_PP(field));				RETURN_FALSE;			}			break;		}		default:			convert_to_long_ex(field);			field_offset = Z_LVAL_PP(field);			if (field_offset<0 || field_offset>=result->num_fields) {				php_error_docref(NULL TSRMLS_CC, E_WARNING,"Sybase:  Bad column offset specified");				RETURN_FALSE;			}			break;	}	*return_value = *result->data[Z_LVAL_PP(row)][field_offset];	pval_copy_constructor(return_value);}/* }}} *//* {{{ proto int sybase_affected_rows([int link_id])    Get number of affected rows in last query */PHP_FUNCTION(sybase_affected_rows){	zval **sybase_link_index = NULL;	sybase_link *sybase_ptr = NULL;	int id                  = 0;	int type                = 0;	switch(ZEND_NUM_ARGS()) {		case 0:			id = php_sybase_module.default_link;			break;		case 1:			if (zend_get_parameters_ex(1, &sybase_link_index) == FAILURE) {				RETURN_FALSE;			}			convert_to_long_ex(sybase_link_index);			id = Z_LVAL_PP(sybase_link_index);			break;		default:			WRONG_PARAM_COUNT;			break;	}		sybase_ptr = (sybase_link *)zend_list_find(id, &type);	if(type != php_sybase_module.le_link && type != php_sybase_module.le_plink) {		php_error_docref(NULL TSRMLS_CC, E_WARNING,"%d is not a Sybase link index",id);		RETURN_FALSE;	}	Z_LVAL_P(return_value) = DBCOUNT(sybase_ptr->link);	Z_TYPE_P(return_value) = IS_LONG;} PHP_MINFO_FUNCTION(sybase){	char maxp[32], maxl[32];		if (php_sybase_module.max_persistent==-1) {		snprintf(maxp, 31, "%ld/unlimited", php_sybase_module.num_persistent );	} else {		snprintf(maxp, 31, "%ld/%ld", php_sybase_module.num_persistent, php_sybase_module.max_persistent);	}	maxp[31]=0;	if (php_sybase_module.max_links==-1) {		snprintf(maxl, 31, "%ld/unlimited", php_sybase_module.num_links );	} else {		snprintf(maxl, 31, "%ld/%ld", php_sybase_module.num_links, php_sybase_module.max_links);	}	maxl[31]=0;	php_info_print_table_start();	php_info_print_table_row(2, "Sybase Support", "enabled");	php_info_print_table_row(2, "Allow Persistent Links", (php_sybase_module.allow_persistent?"Yes":"No") );	php_info_print_table_row(2, "Persistent Links", maxp);	php_info_print_table_row(2, "Total Links", maxl);	php_info_print_table_row(2, "Application Name", php_sybase_module.appname );	php_info_print_table_row(2, "Client API Version", dbversion() );	php_info_print_table_end();}/* {{{ proto void sybase_min_error_severity(int severity)   Sets the minimum error severity */PHP_FUNCTION(sybase_min_error_severity){	zval **severity;		if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &severity) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_long_ex(severity);	php_sybase_module.min_error_severity = Z_LVAL_PP(severity);}/* }}} *//* {{{ proto void sybase_min_message_severity(int severity)   Sets the minimum message severity */PHP_FUNCTION(sybase_min_message_severity){	zval **severity;		if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &severity) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_long_ex(severity);	php_sybase_module.min_message_severity = Z_LVAL_PP(severity);}/* }}} */#endif

⌨️ 快捷键说明

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