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

📄 mysqlnd.c

📁 linux下安装不上mysql5与php5的可用此关联
💻 C
📖 第 1 页 / 共 5 页
字号:
	}	return (ulong)(newstr - newstr_s);}/* }}} *//* {{{ _mysqlnd_real_escape_string */staticulong _mysqlnd_real_escape_string(const MYSQLND * const conn, char *newstr, const char *escapestr, int escapestr_len){	if (conn->upsert_status.server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES) {		return _mysqlnd_real_escape_quotes(conn, newstr, escapestr, escapestr_len);	}	return _mysqlnd_real_escape_slashes(conn, newstr, escapestr, escapestr_len);}/* {{{ _mysqlnd_dump_debug_info */static enum_func_status_mysqlnd_dump_debug_info(MYSQLND * const conn TSRMLS_DC){	return mysqlnd_simple_command(conn, COM_DEBUG, NULL, 0, PROT_EOF_PACKET, FALSE TSRMLS_CC);}/* }}} *//* {{{ _mysqlnd_select_db */static enum_func_status_mysqlnd_select_db(MYSQLND * const conn, const char * const db, unsigned int db_len TSRMLS_DC){	enum_func_status ret;	ret = mysqlnd_simple_command(conn, COM_INIT_DB, db, db_len, PROT_OK_PACKET, FALSE TSRMLS_CC);	/*	  The server sends 0 but libmysql doesn't read it and has established	  a protocol of giving back -1. Thus we have to follow it :(	*/	SET_ERROR_AFF_ROWS(conn);	return ret;}/* }}} *//* {{{ _mysqlnd_ping */static enum_func_status_mysqlnd_ping(MYSQLND * const conn TSRMLS_DC){	enum_func_status ret;	ret = mysqlnd_simple_command(conn, COM_PING, NULL, 0, PROT_OK_PACKET, FALSE TSRMLS_CC);	/*	  The server sends 0 but libmysql doesn't read it and has established	  a protocol of giving back -1. Thus we have to follow it :(	*/	SET_ERROR_AFF_ROWS(conn);	return ret;}/* }}} *//* {{{ mysqlnd_stat */static enum_func_status_mysqlnd_stat(MYSQLND *conn, char **message, unsigned int * message_len TSRMLS_DC){	enum_func_status ret;	php_mysql_packet_stats stats_header;	ret = mysqlnd_simple_command(conn, COM_STATISTICS, NULL, 0, PROT_LAST, FALSE TSRMLS_CC);	if (FAIL == ret) {		return FAIL;	}	PACKET_INIT_ALLOCA(stats_header, PROT_STATS_PACKET);	if (FAIL == (ret = PACKET_READ_ALLOCA(stats_header, conn))) {		return FAIL;	}	*message = stats_header.message;	*message_len = stats_header.message_len;	/* Ownership transfer */	stats_header.message = NULL;	PACKET_FREE_ALLOCA(stats_header);	return PASS;}/* }}} *//* {{{ _mysqlnd_kill */static enum_func_status_mysqlnd_kill(MYSQLND *conn, unsigned long pid TSRMLS_DC){	enum_func_status ret;	char buff[4];	int4store(buff, pid);	/* If we kill ourselves don't expect OK packet, PROT_LAST will skip it */	if (pid != conn->thread_id) {		ret = mysqlnd_simple_command(conn, COM_PROCESS_KILL, buff, 4, PROT_OK_PACKET, FALSE TSRMLS_CC);		/*		  The server sends 0 but libmysql doesn't read it and has established		  a protocol of giving back -1. Thus we have to follow it :(		*/		conn->upsert_status.affected_rows = -1;		} else if (PASS == (ret = mysqlnd_simple_command(conn, COM_PROCESS_KILL, buff,													 4, PROT_LAST, FALSE TSRMLS_CC))) {		conn->state = CONN_QUIT_SENT;	}	return ret;}/* }}} *//* {{{ _mysqlnd_set_charset */static enum_func_status_mysqlnd_set_charset(MYSQLND * const conn, const char * const csname TSRMLS_DC){	char query[MAX_CHARSET_LEN + 12];	const MYSQLND_CHARSET * const charset = mysqlnd_find_charset_name(csname);	if (!charset) {		SET_CLIENT_ERROR(conn->error_info, CR_CANT_FIND_CHARSET, UNKNOWN_SQLSTATE, "Invalid characterset or character set not supported");		return FAIL;	}	strcpy(query, "SET NAMES ");	strcat(query, csname);	if (FAIL == conn->m->query(conn, query, strlen(query) TSRMLS_CC)) {		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error executing query");	} else if (conn->error_info.error_no) {		return FAIL;	}	conn->charset = charset;	return PASS;}/* }}} *//* {{{ _mysqlnd_refresh */static enum_func_status_mysqlnd_refresh(MYSQLND * const conn, unsigned long options TSRMLS_DC){	zend_uchar bits[1];	int1store(bits, options);	return mysqlnd_simple_command(conn, COM_REFRESH, (char *)bits, 1, PROT_OK_PACKET, FALSE TSRMLS_CC);}/* }}} *//* {{{ _mysqlnd_shutdown */static enum_func_status_mysqlnd_shutdown(MYSQLND * const conn, unsigned long level TSRMLS_DC){	zend_uchar bits[1];	int1store(bits, level);	return mysqlnd_simple_command(conn, COM_SHUTDOWN, (char *)bits, 1, PROT_OK_PACKET, FALSE TSRMLS_CC);}/* }}} */static enum_mysqlnd_collected_statsclose_type_to_stat_map[MYSQLND_CLOSE_LAST] = {	STAT_CLOSE_EXPLICIT,	STAT_CLOSE_IMPLICIT,	STAT_CLOSE_DISCONNECT};/* {{{ _mysqlnd_send_close */static enum_func_status_mysqlnd_send_close(MYSQLND * conn TSRMLS_DC){	enum_func_status ret = PASS;	switch (conn->state) {		case CONN_READY:			ret =  mysqlnd_simple_command(conn, COM_QUIT, NULL, 0, PROT_LAST,										  conn->tmp_int? TRUE : FALSE TSRMLS_CC);			/* Do nothing */			break;		case CONN_NEXT_RESULT_PENDING:		case CONN_QUERY_SENT:		case CONN_FETCHING_DATA:			MYSQLND_INC_CONN_STATISTIC(NULL, STAT_CLOSE_IN_MIDDLE);#ifndef MYSQLND_SILENT			php_printf("Brutally closing connection [%p][%s]\n", conn, conn->scheme);#endif			/*			  Do nothing, the connection will be brutally closed			  and the server will catch it and free close from its side.			*/		case CONN_ALLOCED:			/*			  Allocated but not connected or there was failure when trying			  to connect with pre-allocated connect.			  Fall-through			*/		case CONN_QUIT_SENT:			/* The user has killed its own connection */			break;	}	/*	  We hold one reference, and every other object which needs the	  connection does increase it by 1.	*/	conn->state = CONN_QUIT_SENT;	return ret;}/* }}} *//* {{{ _mysqlnd_close */static enum_func_status_mysqlnd_close(MYSQLND * conn, enum_connection_close_type close_type TSRMLS_DC){	enum_func_status ret = PASS;	enum_mysqlnd_collected_stats stat = close_type_to_stat_map[close_type];	MYSQLND_INC_CONN_STATISTIC(NULL, stat);	_mysqlnd_send_close(conn TSRMLS_CC);	conn->m->free_reference(conn TSRMLS_CC);	return ret;}/* }}} *//* {{{ _mysqlnd_num_fields */unsigned int _mysqlnd_num_fields(const MYSQLND_RES * const res){	return res->field_count;}/* }}} *//* {{{ _mysqlnd_num_fields */mynd_ulonglong _mysqlnd_num_rows(const MYSQLND_RES * const res){	/* Be compatible with libmysql. We count row_count, but will return 0 */	return res->data? res->data->row_count:0;}/* }}} *//* {{{ mysqlnd_field_count */staticunsigned int _mysqlnd_field_count(const MYSQLND * const conn){	return conn->field_count;}/* }}} *//* {{{ mysqlnd_fetch_field */static MYSQLND_FIELD *_mysqlnd_fetch_field(MYSQLND_RES * const result){	if (!result->meta || result->meta->current_field >= result->field_count)		return NULL;	return &result->meta->fields[result->meta->current_field++];}/* }}} *//* {{{ _mysqlnd_fetch_field_direct */static MYSQLND_FIELD *_mysqlnd_fetch_field_direct(const MYSQLND_RES * const result, MYSQLND_FIELD_OFFSET fieldnr){	return result->meta? &result->meta->fields[fieldnr]:NULL;}/* }}} *//* {{{ mysqlnd_field_seek */static MYSQLND_FIELD_OFFSET_mysqlnd_field_seek(MYSQLND_RES * const result, MYSQLND_FIELD_OFFSET field_offset){	MYSQLND_FIELD_OFFSET return_value = 0;	if (result->meta) {		return_value = result->meta->current_field;		result->meta->current_field = field_offset;	}	return return_value;}/* }}} *//* {{{ _mysqlnd_field_tell */static MYSQLND_FIELD_OFFSET_mysqlnd_field_tell(const MYSQLND_RES * const result){	return result->meta? result->meta->current_field:0;}/* }}} *//* {{{ _mysqlnd_insert_id */staticmynd_ulonglong _mysqlnd_insert_id(const MYSQLND * const conn){	return conn->upsert_status.last_insert_id;}/* }}} *//* {{{ _mysqlnd_affected_rows */staticmynd_ulonglong _mysqlnd_affected_rows(const MYSQLND * const conn){	return conn->upsert_status.affected_rows;}/* }}} *//* {{{ _mysqlnd_warning_count */staticunsigned int _mysqlnd_warning_count(const MYSQLND * const conn){	return conn->upsert_status.warning_count;}/* }}} *//* {{{ _mysqlnd_info */staticconst char *_mysqlnd_info(const MYSQLND * const conn){	return conn->last_message;}/* }}} *//* {{{ _mysqlnd_client_info */const char *_mysqlnd_get_client_info(){	return MYSQLND_VERSION;}/* }}} *//* {{{ _mysqlnd_get_client_version */unsigned int _mysqlnd_get_client_version(){	return MYSQLND_VERSION_ID;}/* }}} *//* {{{ _mysqlnd_get_server_info */staticconst char * _mysqlnd_get_server_info(const MYSQLND * const conn){	return conn->server_version;}/* }}} *//* {{{ _mysqlnd_get_host_info */staticconst char * _mysqlnd_get_host_info(const MYSQLND * const conn){	return conn->host_info;}/* }}} *//* {{{ _mysqlnd_get_proto_info */staticunsigned int _mysqlnd_get_proto_info(const MYSQLND *const conn){	return conn->protocol_version;}/* }}} *//* {{{ _mysqlnd_thread_id */staticmynd_ulonglong _mysqlnd_thread_id(const MYSQLND * const conn){	return conn->thread_id;}/* }}} *//* {{{ _mysqlnd_get_server_version */staticunsigned long _mysqlnd_get_server_version(const MYSQLND * const conn){	long major, minor, patch;	char *p = conn->server_version;	if (!conn->server_version) {		return 0;	}	major = strtol(p, &p, 10);	p += 1; /* consume the dot */	minor = strtol(p, &p, 10);	p += 1; /* consume the dot */	patch = strtol(p, &p, 10);		return (unsigned long)(major * 10000L + (unsigned long)(minor * 100L + patch));}/* }}} *//* {{{ _mysqlnd_more_results */staticzend_bool _mysqlnd_more_results(const MYSQLND * const conn){	/* (conn->state == CONN_NEXT_RESULT_PENDING) too */	return conn->upsert_status.server_status & SERVER_MORE_RESULTS_EXISTS? TRUE:FALSE;}/* }}} *//* {{{ _mysqlnd_next_result */static enum_func_status_mysqlnd_next_result(MYSQLND * const conn TSRMLS_DC){	enum_func_status ret;	if (conn->state != CONN_NEXT_RESULT_PENDING) {		return FAIL;	}	SET_EMPTY_ERROR(conn->error_info);	conn->upsert_status.affected_rows= ~(mynd_ulonglong) 0;	/*	  We are sure that there is a result set, since conn->state is set accordingly	  in mysqlnd_store_result() or mysqlnd_fetch_row_unbuffered()	*/	if (FAIL == (ret = mysqlnd_query_read_result_set_header(conn, NULL TSRMLS_CC))) {#ifndef MYSQLND_SILENT		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Serious error");#endif		conn->state = CONN_QUIT_SENT;	}	return ret;}/* }}} *//* {{{ mysqlnd_field_type_name */const char *mysqlnd_field_type_name(enum mysqlnd_field_types field_type){	switch(field_type) {		case FIELD_TYPE_STRING:		case FIELD_TYPE_VAR_STRING:			return "string";		case FIELD_TYPE_TINY:		case FIELD_TYPE_SHORT:		case FIELD_

⌨️ 快捷键说明

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