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

📄 php_mssql.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
	int i;	if (ZEND_NUM_ARGS() > expected_args) {		WRONG_PARAM_COUNT;	}	switch (ZEND_NUM_ARGS()) {		case 1:			if (zend_get_parameters_ex(1, &mssql_result_index)==FAILURE) {				RETURN_FALSE;			}			if (!result_type) {				result_type = MSSQL_BOTH;			}			break;		case 2:			if (zend_get_parameters_ex(2, &mssql_result_index, &resulttype)==FAILURE) {				RETURN_FALSE;			}			convert_to_long_ex(resulttype);			result_type = Z_LVAL_PP(resulttype);			break;		default:			WRONG_PARAM_COUNT;			break;	}	ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result", le_result);		if (MS_SQL_G(server_message)) {		STR_FREE(MS_SQL_G(server_message));		MS_SQL_G(server_message) = NULL;	}	if (result->cur_row >= result->num_rows) {		RETURN_FALSE;	}		if (array_init(return_value)==FAILURE) {		RETURN_FALSE;	}		for (i=0; i<result->num_fields; i++) {		if (Z_TYPE(result->data[result->cur_row][i]) != IS_NULL) {			char *data;			int data_len;			int should_copy;			if (Z_TYPE(result->data[result->cur_row][i]) == IS_STRING) {				if (PG(magic_quotes_runtime)) {					data = php_addslashes(Z_STRVAL(result->data[result->cur_row][i]), Z_STRLEN(result->data[result->cur_row][i]), &data_len, 0 TSRMLS_CC);					should_copy = 0;				}				else				{					data = Z_STRVAL(result->data[result->cur_row][i]);					data_len = Z_STRLEN(result->data[result->cur_row][i]);					should_copy = 1;				}				if (result_type & MSSQL_NUM) {					add_index_stringl(return_value, i, data, data_len, should_copy);					should_copy = 1;				}								if (result_type & MSSQL_ASSOC) {					add_assoc_stringl(return_value, result->fields[i].name, data, data_len, should_copy);				}			}			else if (Z_TYPE(result->data[result->cur_row][i]) == IS_LONG) {				if (result_type & MSSQL_NUM)					add_index_long(return_value, i, Z_LVAL(result->data[result->cur_row][i]));								if (result_type & MSSQL_ASSOC)					add_assoc_long(return_value, result->fields[i].name, Z_LVAL(result->data[result->cur_row][i]));			}			else if (Z_TYPE(result->data[result->cur_row][i]) == IS_DOUBLE) {				if (result_type & MSSQL_NUM)					add_index_double(return_value, i, Z_DVAL(result->data[result->cur_row][i]));								if (result_type & MSSQL_ASSOC)					add_assoc_double(return_value, result->fields[i].name, Z_DVAL(result->data[result->cur_row][i]));			}		}		else		{			if (result_type & MSSQL_NUM)				add_index_null(return_value, i);			if (result_type & MSSQL_ASSOC)				add_assoc_null(return_value, result->fields[i].name);		}	}	result->cur_row++;}/* {{{ proto array mssql_fetch_row(resource result_id)   Returns an array of the current row in the result set specified by result_id */PHP_FUNCTION(mssql_fetch_row){	php_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MSSQL_NUM, 1);}/* }}} *//* {{{ proto object mssql_fetch_object(resource result_id [, int result_type])   Returns a psuedo-object of the current row in the result set specified by result_id */PHP_FUNCTION(mssql_fetch_object){	php_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MSSQL_ASSOC, 2);	if (Z_TYPE_P(return_value)==IS_ARRAY) {		object_and_properties_init(return_value, ZEND_STANDARD_CLASS_DEF_PTR, Z_ARRVAL_P(return_value));	}}/* }}} *//* {{{ proto array mssql_fetch_array(resource result_id [, int result_type])   Returns an associative array of the current row in the result set specified by result_id */PHP_FUNCTION(mssql_fetch_array){	php_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MSSQL_BOTH, 2);}/* }}} *//* {{{ proto array mssql_fetch_assoc(resource result_id)   Returns an associative array of the current row in the result set specified by result_id */PHP_FUNCTION(mssql_fetch_assoc){	php_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MSSQL_ASSOC, 1);}/* }}} *//* {{{ proto bool mssql_data_seek(resource result_id, int offset)   Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number */PHP_FUNCTION(mssql_data_seek){	zval **mssql_result_index, **offset;	mssql_result *result;	if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) {		WRONG_PARAM_COUNT;	}		ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result", le_result);		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, "Bad row offset");		RETURN_FALSE;	}		result->cur_row = Z_LVAL_PP(offset);	RETURN_TRUE;}/* }}} */static char *php_mssql_get_field_name(int type){	switch (type) {		case SQLBINARY:		case SQLVARBINARY:			return "blob";			break;		case SQLCHAR:		case SQLVARCHAR:			return "char";			break;		case SQLTEXT:			return "text";			break;		case SQLDATETIME:		case SQLDATETIM4:		case SQLDATETIMN:			return "datetime";			break;		case SQLDECIMAL:		case SQLFLT4:		case SQLFLT8:		case SQLFLTN:			return "real";			break;		case SQLINT1:		case SQLINT2:		case SQLINT4:		case SQLINTN:			return "int";			break;		case SQLNUMERIC:			return "numeric";			break;		case SQLMONEY:		case SQLMONEY4:		case SQLMONEYN:			return "money";			break;		case SQLBIT:			return "bit";			break;		case SQLIMAGE:			return "image";			break;#ifdef SQLUNIQUE		case SQLUNIQUE:			return "uniqueidentifier";			break;#endif		default:			return "unknown";			break;	}}/* {{{ proto object mssql_fetch_field(resource result_id [, int offset])   Gets information about certain fields in a query result */PHP_FUNCTION(mssql_fetch_field){	zval **mssql_result_index, **offset;	int field_offset;	mssql_result *result;	switch (ZEND_NUM_ARGS()) {		case 1:			if (zend_get_parameters_ex(1, &mssql_result_index)==FAILURE) {				RETURN_FALSE;			}			field_offset=-1;			break;		case 2:			if (zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) {				RETURN_FALSE;			}			convert_to_long_ex(offset);			field_offset = Z_LVAL_PP(offset);			break;		default:			WRONG_PARAM_COUNT;			break;	}		ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result", le_result);			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, "Bad column offset");		}		RETURN_FALSE;	}	if (object_init(return_value)==FAILURE) {		RETURN_FALSE;	}	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_mssql_get_field_name(Z_TYPE(result->fields[field_offset])), 1);}/* }}} *//* {{{ proto int mssql_field_length(resource result_id [, int offset])   Get the length of a MS-SQL field */PHP_FUNCTION(mssql_field_length){	zval **mssql_result_index, **offset;	int field_offset;	mssql_result *result;	switch (ZEND_NUM_ARGS()) {		case 1:			if (zend_get_parameters_ex(1, &mssql_result_index)==FAILURE) {				RETURN_FALSE;			}			field_offset=-1;			break;		case 2:			if (zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) {				RETURN_FALSE;			}			convert_to_long_ex(offset);			field_offset = Z_LVAL_PP(offset);			break;		default:			WRONG_PARAM_COUNT;			break;	}		ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result", le_result);			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, "Bad column offset");		}		RETURN_FALSE;	}	Z_LVAL_P(return_value) = result->fields[field_offset].max_length;	Z_TYPE_P(return_value) = IS_LONG;}/* }}} *//* {{{ proto string mssql_field_name(resource result_id [, int offset])   Returns the name of the field given by offset in the result set given by result_id */PHP_FUNCTION(mssql_field_name){	zval **mssql_result_index, **offset;	int field_offset;	mssql_result *result;	switch (ZEND_NUM_ARGS()) {		case 1:			if (zend_get_parameters_ex(1, &mssql_result_index)==FAILURE) {				RETURN_FALSE;			}			field_offset=-1;			break;		case 2:			if (zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) {				RETURN_FALSE;			}			convert_to_long_ex(offset);			field_offset = Z_LVAL_PP(offset);			break;		default:			WRONG_PARAM_COUNT;			break;	}		ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result", le_result);			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, "Bad column offset");		}		RETURN_FALSE;	}	Z_STRVAL_P(return_value) = estrdup(result->fields[field_offset].name);	Z_STRLEN_P(return_value) = strlen(result->fields[field_offset].name);	Z_TYPE_P(return_value) = IS_STRING;}/* }}} *//* {{{ proto string mssql_field_type(resource result_id [, int offset])   Returns the type of a field */PHP_FUNCTION(mssql_field_type){	zval **mssql_result_index, **offset;	int field_offset;	mssql_result *result;	switch (ZEND_NUM_ARGS()) {		case 1:			if (zend_get_parameters_ex(1, &mssql_result_index)==FAILURE) {				RETURN_FALSE;			}			field_offset=-1;			break;		case 2:			if (zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) {				RETURN_FALSE;			}			convert_to_long_ex(offset);			field_offset = Z_LVAL_PP(offset);			break;		default:			WRONG_PARAM_COUNT;			break;	}		ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result", le_result);			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, "Bad column offset");		}		RETURN_FALSE;	}	Z_STRVAL_P(return_value) = estrdup(php_mssql_get_field_name(Z_TYPE(result->fields[field_offset])));	Z_STRLEN_P(return_value) = strlen(php_mssql_get_field_name(Z_TYPE(result->fields[field_offset])));	Z_TYPE_P(return_value) = IS_STRING;}/* }}} *//* {{{ proto bool mssql_field_seek(int result_id, int offset)   Seeks to the specified field offset */PHP_FUNCTION(mssql_field_seek){	zval **mssql_result_index, **offset;	int field_offset;	mssql_result *result;	if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) {		WRONG_PARAM_COUNT;	}		ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result", le_result);			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, "Bad column offset");		RETURN_FALSE;	}	result->cur_field = field_offset;	RETURN_TRUE;}/* }}} *//* {{{ proto string mssql_result(resource result_id, int row, mixed field)   Returns the contents of one cell from a MS-SQL result set */PHP_FUNCTION(mssql_result){	zval **row, **field, **mssql_result_index;	int field_offset=0;	mssql_result *result;	if (ZEND_NUM_ARGS()!=3 || zend_get_parameters_ex(3, &mssql_result_index, &row, &field)==FAILURE) {		WRONG_PARAM_COUNT;	}	ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result", le_result);			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, "Bad row offset (%ld)", Z_LVAL_PP(row));		RETURN_FALSE;

⌨️ 快捷键说明

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