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

📄 php_msql.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
	}		MSQL_GET_QUERY(result);	RETVAL_LONG(msql_result ? msqlNumFields(msql_result) : 0);}/* }}} *//* {{{ php_msql_fetch_hash */static void php_msql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type){	pval *result, *arg2;	m_result *msql_result;	m_row msql_row;	m_field *msql_field;	m_query *msql_query;	int num_fields;	int i;		switch (ZEND_NUM_ARGS()) {		case 1:			if (getParameters(ht, 1, &result)==FAILURE) {				RETURN_FALSE;			}			if (!result_type) {				result_type = MSQL_BOTH;			}			break;		case 2:			if (getParameters(ht, 2, &result, &arg2)==FAILURE) {				RETURN_FALSE;			}			convert_to_long(arg2);			result_type = Z_LVAL_P(arg2);			break;		default:			WRONG_PARAM_COUNT;			break;	}		MSQL_GET_QUERY(result);	if (!msql_result || (msql_row=msqlFetchRow(msql_result))==NULL) {		RETURN_FALSE;	}	num_fields = msqlNumFields(msql_result);		if (array_init(return_value)==FAILURE) {		RETURN_FALSE;	}		msqlFieldSeek(msql_result,0);	for (msql_field=msqlFetchField(msql_result),i=0; msql_field; msql_field=msqlFetchField(msql_result),i++) {		if (msql_row[i]) {			char *data;			int data_len;			int should_copy;			if (PG(magic_quotes_runtime)) {				data = php_addslashes(msql_row[i], 0, &data_len, 0 TSRMLS_CC);				should_copy = 0;			} else {				data = msql_row[i];				data_len = strlen(data);				should_copy = 1;			}						if (result_type & MSQL_NUM) {				add_index_stringl(return_value, i, data, data_len, should_copy);				should_copy = 1;			}						if (result_type & MSQL_ASSOC) {				add_assoc_stringl(return_value, msql_field->name, data, data_len, should_copy);			}		} else {			/* NULL value. */			if (result_type & MSQL_NUM) {				add_index_null(return_value, i);			}			if (result_type & MSQL_ASSOC) {				add_assoc_null(return_value, msql_field->name);			}		}	}}/* }}} *//* {{{ proto array msql_fetch_row(int query)   Get a result row as an enumerated array */PHP_FUNCTION(msql_fetch_row){	php_msql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MSQL_NUM);}/* }}} *//* {{{ proto object msql_fetch_object(int query [, int result_type])   Fetch a result row as an object */PHP_FUNCTION(msql_fetch_object){	php_msql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);	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 msql_fetch_array(int query [, int result_type])   Fetch a result row as an associative array */PHP_FUNCTION(msql_fetch_array){	php_msql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);}/* }}} *//* {{{ proto int msql_data_seek(int query, int row_number)   Move internal result pointer */PHP_FUNCTION(msql_data_seek){	pval *result,*offset;	m_result *msql_result;	m_query *msql_query;		if (ZEND_NUM_ARGS()!=2 || getParameters(ht, 2, &result, &offset)==FAILURE) {		WRONG_PARAM_COUNT;	}		MSQL_GET_QUERY(result);	convert_to_long(offset);	if (!msql_result ||			Z_LVAL_P(offset)<0 || 			Z_LVAL_P(offset)>=msqlNumRows(msql_result)) {		php_error(E_WARNING, "%s(): %d is invalid for mSQL query index %d", get_active_function_name(TSRMLS_C),Z_LVAL_P(offset),Z_LVAL_P(result));		RETURN_FALSE;	}	msqlDataSeek(msql_result,Z_LVAL_P(offset));	RETURN_TRUE;}/* }}} *//* {{{ php_msql_get_field_name */static char *php_msql_get_field_name(int field_type){	switch (field_type) {#if MSQL1		case INT_TYPE:			return "int";			break;		case CHAR_TYPE:			return "char";			break;		case REAL_TYPE:			return "real";			break;		case IDENT_TYPE:			return "ident";			break;		case NULL_TYPE:			return "null";			break;#else		case INT_TYPE:		case UINT_TYPE:		case CHAR_TYPE:		case TEXT_TYPE:		case REAL_TYPE:		case NULL_TYPE:		case DATE_TYPE:		case TIME_TYPE:		case MONEY_TYPE:			return msqlTypeNames[field_type];			break;#endif		default:			return "unknown";			break;	}}/* }}} *//* {{{ proto object msql_fetch_field(int query [, int field_offset])   Get column information from a result and return as an object */PHP_FUNCTION(msql_fetch_field){	pval *result, *field=NULL;	m_result *msql_result;	m_field *msql_field;	m_query *msql_query;		switch (ZEND_NUM_ARGS()) {		case 1:			if (getParameters(ht, 1, &result)==FAILURE) {				RETURN_FALSE;			}			break;		case 2:			if (getParameters(ht, 2, &result, &field)==FAILURE) {				RETURN_FALSE;			}			convert_to_long(field);		default:			WRONG_PARAM_COUNT;	}		MSQL_GET_QUERY(result);		if (field) {		if (Z_LVAL_P(field)<0 || Z_LVAL_P(field)>=msqlNumRows(msql_result)) {			php_error(E_NOTICE, "%s(): Bad field offset specified", get_active_function_name(TSRMLS_C));			RETURN_FALSE;		}		msqlFieldSeek(msql_result,Z_LVAL_P(field));	}	if (!msql_result || (msql_field=msqlFetchField(msql_result))==NULL) {		RETURN_FALSE;	}	if (object_init(return_value)==FAILURE) {		RETURN_FALSE;	}	add_property_string(return_value, "name",(msql_field->name?msql_field->name:empty_string), 1);	add_property_string(return_value, "table",(msql_field->table?msql_field->table:empty_string), 1);	add_property_long(return_value, "not_null",IS_NOT_NULL(msql_field->flags));#if MSQL1	add_property_long(return_value, "primary_key",(msql_field->flags&PRI_KEY_FLAG?1:0));#else	add_property_long(return_value, "unique",(msql_field->flags&UNIQUE_FLAG?1:0));#endif	add_property_string(return_value, "type",php_msql_get_field_name(Z_TYPE_P(msql_field)), 1);}/* }}} *//* {{{ proto int msql_field_seek(int query, int field_offset)   Set result pointer to a specific field offset */PHP_FUNCTION(msql_field_seek){	pval *result, *offset;	m_result *msql_result;	m_query *msql_query;		if (ZEND_NUM_ARGS()!=2 || getParameters(ht, 2, &result, &offset)==FAILURE) {		WRONG_PARAM_COUNT;	}		MSQL_GET_QUERY(result);	convert_to_long(offset);	if(!msql_result) {		RETURN_FALSE;	}	if (Z_LVAL_P(offset)<0 || Z_LVAL_P(offset)>=msqlNumFields(msql_result)) {		php_error(E_WARNING,"%s(): Field %d is invalid for mSQL query index %d", get_active_function_name(TSRMLS_C),				Z_LVAL_P(offset),Z_LVAL_P(result));		RETURN_FALSE;	}	msqlFieldSeek(msql_result,Z_LVAL_P(offset));	RETURN_TRUE;}/* }}} */#define PHP_MSQL_FIELD_NAME 1#define PHP_MSQL_FIELD_TABLE 2#define PHP_MSQL_FIELD_LEN 3#define PHP_MSQL_FIELD_TYPE 4#define PHP_MSQL_FIELD_FLAGS 5/* {{{ php_msql_field_info */static void php_msql_field_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type){	pval *result, *field;	m_result *msql_result;	m_field *msql_field;	m_query *msql_query;		if (ZEND_NUM_ARGS()!=2 || getParameters(ht, 2, &result, &field)==FAILURE) {		WRONG_PARAM_COUNT;	}		MSQL_GET_QUERY(result);	if(!msql_result) {		RETURN_FALSE;	}	convert_to_long(field);	if (Z_LVAL_P(field)<0 || Z_LVAL_P(field)>=msqlNumFields(msql_result)) {		php_error(E_WARNING,"%s(): Field %d is invalid for mSQL query index %d", get_active_function_name(TSRMLS_C),Z_LVAL_P(field),Z_LVAL_P(result));		RETURN_FALSE;	}	msqlFieldSeek(msql_result,Z_LVAL_P(field));	if ((msql_field=msqlFetchField(msql_result))==NULL) {		RETURN_FALSE;	}		switch (entry_type) {		case PHP_MSQL_FIELD_NAME:			Z_STRLEN_P(return_value) = strlen(msql_field->name);			Z_STRVAL_P(return_value) = estrndup(msql_field->name,Z_STRLEN_P(return_value));			Z_TYPE_P(return_value) = IS_STRING;			break;		case PHP_MSQL_FIELD_TABLE:			Z_STRLEN_P(return_value) = strlen(msql_field->table);			Z_STRVAL_P(return_value) = estrndup(msql_field->table,Z_STRLEN_P(return_value));			Z_TYPE_P(return_value) = IS_STRING;			break;		case PHP_MSQL_FIELD_LEN:			Z_LVAL_P(return_value) = msql_field->length;			Z_TYPE_P(return_value) = IS_LONG;			break;		case PHP_MSQL_FIELD_TYPE:			Z_STRVAL_P(return_value) = estrdup(php_msql_get_field_name(Z_TYPE_P(msql_field)));			Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));			Z_TYPE_P(return_value) = IS_STRING;			break;		case PHP_MSQL_FIELD_FLAGS:#if MSQL1			if ((msql_field->flags&NOT_NULL_FLAG) && (msql_field->flags&PRI_KEY_FLAG)) {				Z_STRVAL_P(return_value) = estrndup("primary key not null",20);				Z_STRLEN_P(return_value) = 20;				Z_TYPE_P(return_value) = IS_STRING;			} else if (msql_field->flags&NOT_NULL_FLAG) {				Z_STRVAL_P(return_value) = estrndup("not null",8);				Z_STRLEN_P(return_value) = 8;				Z_TYPE_P(return_value) = IS_STRING;			} else if (msql_field->flags&PRI_KEY_FLAG) {				Z_STRVAL_P(return_value) = estrndup("primary key",11);				Z_STRLEN_P(return_value) = 11;				Z_TYPE_P(return_value) = IS_STRING;			} else {				ZVAL_FALSE(return_value);			}#else			if ((msql_field->flags&NOT_NULL_FLAG) && (msql_field->flags&UNIQUE_FLAG)) {				Z_STRVAL_P(return_value) = estrndup("unique not null",15);				Z_STRLEN_P(return_value) = 15;				Z_TYPE_P(return_value) = IS_STRING;			} else if (msql_field->flags&NOT_NULL_FLAG) {				Z_STRVAL_P(return_value) = estrndup("not null",8);				Z_STRLEN_P(return_value) = 8;				Z_TYPE_P(return_value) = IS_STRING;			} else if (msql_field->flags&UNIQUE_FLAG) {				Z_STRVAL_P(return_value) = estrndup("unique",6);				Z_STRLEN_P(return_value) = 6;				Z_TYPE_P(return_value) = IS_STRING;			} else {				ZVAL_FALSE(return_value);			}#endif			break;		default:			RETURN_FALSE;	}}/* }}} *//* {{{ proto string msql_field_name(int query, int field_index)   Get the name of the specified field in a result */PHP_FUNCTION(msql_field_name){	php_msql_field_info(INTERNAL_FUNCTION_PARAM_PASSTHRU,PHP_MSQL_FIELD_NAME);}/* }}} *//* {{{ proto string msql_field_table(int query, int field_offset)   Get name of the table the specified field is in */PHP_FUNCTION(msql_field_table){	php_msql_field_info(INTERNAL_FUNCTION_PARAM_PASSTHRU,PHP_MSQL_FIELD_TABLE);}/* }}} *//* {{{ proto int msql_field_len(int query, int field_offet)   Returns the length of the specified field */PHP_FUNCTION(msql_field_len){	php_msql_field_info(INTERNAL_FUNCTION_PARAM_PASSTHRU,PHP_MSQL_FIELD_LEN);}/* }}} *//* {{{ proto string msql_field_type(int query, int field_offset)   Get the type of the specified field in a result */PHP_FUNCTION(msql_field_type){	php_msql_field_info(INTERNAL_FUNCTION_PARAM_PASSTHRU,PHP_MSQL_FIELD_TYPE);}/* }}} *//* {{{ proto string msql_field_flags(int query, int field_offset)   Get the flags associated with the specified field in a result */PHP_FUNCTION(msql_field_flags){	php_msql_field_info(INTERNAL_FUNCTION_PARAM_PASSTHRU,PHP_MSQL_FIELD_FLAGS);}/* }}} *//* {{{ proto int msql_free_result(int query)   Free result memory */PHP_FUNCTION(msql_free_result){	pval *result;	m_result *msql_result;	m_query *msql_query;		if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &result)==FAILURE) {		WRONG_PARAM_COUNT;	}	MSQL_GET_QUERY(result);	zend_list_delete(Z_LVAL_P(result));	RETURN_TRUE;}/* }}} *//* {{{ proto int msql_affected_rows(int query)   Return number of affected rows */PHP_FUNCTION(msql_affected_rows) {	pval *result;	m_result *msql_result;	m_query *msql_query;	if(ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &result) == FAILURE) {		WRONG_PARAM_COUNT;	}	MSQL_GET_QUERY(result);	RETVAL_LONG(msql_query->af_rows);}/* }}} */#endif/* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */

⌨️ 快捷键说明

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