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

📄 mysqli.c

📁 linux下安装不上mysql5与php5的可用此关联
💻 C
📖 第 1 页 / 共 3 页
字号:
	} else {		free_storage = mysqli_objects_free_storage;	}	retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t) zend_objects_destroy_object, free_storage, NULL TSRMLS_CC);	retval.handlers = &mysqli_object_handlers;	return retval;}/* }}} */static zend_module_dep mysqli_deps[] = {#if defined(HAVE_SPL) && ((PHP_MAJOR_VERSION > 5) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1))	ZEND_MOD_REQUIRED("spl")#endif	{NULL, NULL, NULL}};	/* {{{ mysqli_module_entry */zend_module_entry mysqli_module_entry = {#if ZEND_MODULE_API_NO >= 20050922	STANDARD_MODULE_HEADER_EX, NULL,	mysqli_deps,#elif ZEND_MODULE_API_NO >= 20010901	STANDARD_MODULE_HEADER,#endif	"mysqli",	mysqli_functions,	PHP_MINIT(mysqli),	PHP_MSHUTDOWN(mysqli),	PHP_RINIT(mysqli),	PHP_RSHUTDOWN(mysqli),	PHP_MINFO(mysqli),	"0.1", /* Replace with version number for your extension */	PHP_MODULE_GLOBALS(mysqli),	PHP_GINIT(mysqli),	NULL,	NULL,	STANDARD_MODULE_PROPERTIES_EX};/* }}} */#ifdef COMPILE_DL_MYSQLIZEND_GET_MODULE(mysqli)#endif/* {{{ PHP_INI_BEGIN*/PHP_INI_BEGIN()	STD_PHP_INI_ENTRY_EX("mysqli.max_links",			"-1",	PHP_INI_SYSTEM,		OnUpdateLong,		max_links,			zend_mysqli_globals,		mysqli_globals, display_link_numbers)	STD_PHP_INI_ENTRY("mysqli.default_host",			NULL,	PHP_INI_ALL,		OnUpdateString,		default_host,		zend_mysqli_globals,		mysqli_globals)	STD_PHP_INI_ENTRY("mysqli.default_user",			NULL,	PHP_INI_ALL,		OnUpdateString,		default_user,		zend_mysqli_globals,		mysqli_globals)	STD_PHP_INI_ENTRY("mysqli.default_pw",				NULL,	PHP_INI_ALL,		OnUpdateString,		default_pw,			zend_mysqli_globals,		mysqli_globals)	STD_PHP_INI_ENTRY("mysqli.default_port",			"3306",	PHP_INI_ALL,		OnUpdateLong,		default_port,		zend_mysqli_globals,		mysqli_globals)	STD_PHP_INI_ENTRY("mysqli.default_socket",			NULL,	PHP_INI_ALL,		OnUpdateStringUnempty,	default_socket,	zend_mysqli_globals,		mysqli_globals)	STD_PHP_INI_BOOLEAN("mysqli.reconnect",				"0",	PHP_INI_SYSTEM,		OnUpdateLong,		reconnect,			zend_mysqli_globals,		mysqli_globals)	STD_PHP_INI_BOOLEAN("mysqli.cache_size",			"2000",	PHP_INI_SYSTEM,		OnUpdateLong,		cache_size,			zend_mysqli_globals,		mysqli_globals)PHP_INI_END()/* }}} */#define MYSQLI_ZVAL_CACHE_SIZE 500/* {{{ PHP_GINIT_FUNCTION */static PHP_GINIT_FUNCTION(mysqli){	mysqli_globals->num_links = 0;	mysqli_globals->max_links = -1;	mysqli_globals->default_port = 0;	mysqli_globals->default_host = NULL;	mysqli_globals->default_user = NULL;	mysqli_globals->default_pw = NULL;	mysqli_globals->default_socket = NULL;	mysqli_globals->reconnect = 0;	mysqli_globals->report_mode = 0;	mysqli_globals->report_ht = 0;#ifdef HAVE_EMBEDDED_MYSQLI	mysqli_globals->embedded = 1;#else	mysqli_globals->embedded = 0;#endif}/* }}} *//* {{{ PHP_MINIT_FUNCTION */PHP_MINIT_FUNCTION(mysqli){	zend_class_entry *ce,cex;	zend_object_handlers *std_hnd = zend_get_std_object_handlers();		REGISTER_INI_ENTRIES();#ifdef HAVE_MYSQLND	mysqlnd_library_init();	MyG(mysqlnd_zval_cache) = mysqlnd_palloc_init_cache(MyG(cache_size));	MyG(mysqlnd_qcache) = mysqlnd_qcache_init_cache();#endif	memcpy(&mysqli_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));	mysqli_object_handlers.clone_obj = NULL;	mysqli_object_handlers.read_property = mysqli_read_property;	mysqli_object_handlers.write_property = mysqli_write_property;	mysqli_object_handlers.get_property_ptr_ptr = std_hnd->get_property_ptr_ptr;	mysqli_object_handlers.get_constructor = php_mysqli_constructor_get;	zend_u_hash_init(&classes, 0, NULL, NULL, 1, 1);	/* persistent connections */	le_pmysqli = zend_register_list_destructors_ex(NULL, php_mysqli_dtor,		"MySqli persistent connection", module_number);	INIT_CLASS_ENTRY(cex, "mysqli_sql_exception", mysqli_exception_methods);#ifdef HAVE_SPL	mysqli_exception_class_entry = zend_register_internal_class_ex(&cex, spl_ce_RuntimeException, NULL TSRMLS_CC);#else	mysqli_exception_class_entry = zend_register_internal_class_ex(&cex, zend_exception_get_default(TSRMLS_C), NULL TSRMLS_CC);#endif	mysqli_exception_class_entry->ce_flags |= ZEND_ACC_FINAL;	zend_declare_property_long(mysqli_exception_class_entry, "code", sizeof("code")-1, 0, ZEND_ACC_PROTECTED TSRMLS_CC);	zend_declare_property_string(mysqli_exception_class_entry, "sqlstate", sizeof("sqlstate")-1, "00000", ZEND_ACC_PROTECTED TSRMLS_CC);		REGISTER_MYSQLI_CLASS_ENTRY("mysqli_driver", mysqli_driver_class_entry, mysqli_driver_methods);	ce = mysqli_driver_class_entry;	zend_u_hash_init(&mysqli_driver_properties, 0, NULL, NULL, 1, 1);	MYSQLI_ADD_PROPERTIES(&mysqli_driver_properties, mysqli_driver_property_entries);	zend_u_hash_add(&classes, ZEND_STR_TYPE, ce->name, ce->name_length+1, &mysqli_driver_properties, sizeof(mysqli_driver_properties), NULL);	ce->ce_flags |= ZEND_ACC_FINAL_CLASS;	REGISTER_MYSQLI_CLASS_ENTRY("mysqli", mysqli_link_class_entry, mysqli_link_methods);	ce = mysqli_link_class_entry;	zend_u_hash_init(&mysqli_link_properties, 0, NULL, NULL, 1, 1);	MYSQLI_ADD_PROPERTIES(&mysqli_link_properties, mysqli_link_property_entries);	zend_u_hash_add(&classes, ZEND_STR_TYPE, ce->name, ce->name_length+1, &mysqli_link_properties, sizeof(mysqli_link_properties), NULL);	REGISTER_MYSQLI_CLASS_ENTRY("mysqli_warning", mysqli_warning_class_entry, mysqli_warning_methods);	ce = mysqli_warning_class_entry;	ce->ce_flags |= ZEND_ACC_FINAL_CLASS | ZEND_ACC_PROTECTED;	zend_u_hash_init(&mysqli_warning_properties, 0, NULL, NULL, 1, 1);	MYSQLI_ADD_PROPERTIES(&mysqli_warning_properties, mysqli_warning_property_entries);	zend_u_hash_add(&classes, ZEND_STR_TYPE, ce->name, ce->name_length+1, &mysqli_warning_properties, sizeof(mysqli_warning_properties), NULL);	REGISTER_MYSQLI_CLASS_ENTRY("mysqli_result", mysqli_result_class_entry, mysqli_result_methods);	ce = mysqli_result_class_entry;	zend_u_hash_init(&mysqli_result_properties, 0, NULL, NULL, 1, 1);	MYSQLI_ADD_PROPERTIES(&mysqli_result_properties, mysqli_result_property_entries);	zend_u_hash_add(&classes, ZEND_STR_TYPE, ce->name, ce->name_length+1, &mysqli_result_properties, sizeof(mysqli_result_properties), NULL);	REGISTER_MYSQLI_CLASS_ENTRY("mysqli_stmt", mysqli_stmt_class_entry, mysqli_stmt_methods);	ce = mysqli_stmt_class_entry;	zend_u_hash_init(&mysqli_stmt_properties, 0, NULL, NULL, 1, 1);	MYSQLI_ADD_PROPERTIES(&mysqli_stmt_properties, mysqli_stmt_property_entries);	zend_u_hash_add(&classes, ZEND_STR_TYPE, ce->name, ce->name_length+1, &mysqli_stmt_properties, sizeof(mysqli_stmt_properties), NULL);	/* mysqli_options */	REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_GROUP", MYSQL_READ_DEFAULT_GROUP, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_FILE", MYSQL_READ_DEFAULT_FILE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_OPT_CONNECT_TIMEOUT", MYSQL_OPT_CONNECT_TIMEOUT, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOCAL_INFILE", MYSQL_OPT_LOCAL_INFILE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_INIT_COMMAND", MYSQL_INIT_COMMAND, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_OPT_NUMERIC_AND_DATETIME_AS_UNICODE", MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE, CONST_CS | CONST_PERSISTENT);#ifdef MYSQLND_STRING_TO_INT_CONVERSION	REGISTER_LONG_CONSTANT("MYSQLI_OPT_INT_AND_YEAR_AS_INT", MYSQLND_OPT_INT_AND_YEAR_AS_INT, CONST_CS | CONST_PERSISTENT);#endif	/* mysqli_real_connect flags */		REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL", CLIENT_SSL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_COMPRESS",CLIENT_COMPRESS, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_INTERACTIVE", CLIENT_INTERACTIVE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_IGNORE_SPACE", CLIENT_IGNORE_SPACE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_NO_SCHEMA", CLIENT_NO_SCHEMA, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_FOUND_ROWS", CLIENT_FOUND_ROWS, CONST_CS | CONST_PERSISTENT);	/* for mysqli_query */	REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT", 0, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_USE_RESULT", 1, CONST_CS | CONST_PERSISTENT);	/* for mysqli_fetch_assoc */	REGISTER_LONG_CONSTANT("MYSQLI_ASSOC", MYSQLI_ASSOC, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_NUM", MYSQLI_NUM, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_BOTH", MYSQLI_BOTH, CONST_CS | CONST_PERSISTENT);		/* for mysqli_stmt_set_attr */	REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH", STMT_ATTR_UPDATE_MAX_LENGTH, CONST_CS | CONST_PERSISTENT);#if MYSQL_VERSION_ID > 50003	REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_CURSOR_TYPE", STMT_ATTR_CURSOR_TYPE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_NO_CURSOR", CURSOR_TYPE_NO_CURSOR, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_READ_ONLY", CURSOR_TYPE_READ_ONLY, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_FOR_UPDATE", CURSOR_TYPE_FOR_UPDATE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_SCROLLABLE", CURSOR_TYPE_SCROLLABLE, CONST_CS | CONST_PERSISTENT);#endif#if MYSQL_VERSION_ID > 50007	REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_PREFETCH_ROWS", STMT_ATTR_PREFETCH_ROWS, CONST_CS | CONST_PERSISTENT);#endif		/* column information */	REGISTER_LONG_CONSTANT("MYSQLI_NOT_NULL_FLAG", NOT_NULL_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_PRI_KEY_FLAG", PRI_KEY_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_UNIQUE_KEY_FLAG", UNIQUE_KEY_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_MULTIPLE_KEY_FLAG", MULTIPLE_KEY_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_BLOB_FLAG", BLOB_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_UNSIGNED_FLAG", UNSIGNED_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_ZEROFILL_FLAG", ZEROFILL_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_AUTO_INCREMENT_FLAG", AUTO_INCREMENT_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TIMESTAMP_FLAG", TIMESTAMP_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_SET_FLAG", SET_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_NUM_FLAG", NUM_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_PART_KEY_FLAG", PART_KEY_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_GROUP_FLAG", GROUP_FLAG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DECIMAL", FIELD_TYPE_DECIMAL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY", FIELD_TYPE_TINY, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SHORT", FIELD_TYPE_SHORT, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG", FIELD_TYPE_LONG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_FLOAT", FIELD_TYPE_FLOAT, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DOUBLE", FIELD_TYPE_DOUBLE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NULL", FIELD_TYPE_NULL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIMESTAMP", FIELD_TYPE_TIMESTAMP, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONGLONG", FIELD_TYPE_LONGLONG, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INT24", FIELD_TYPE_INT24, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATE", FIELD_TYPE_DATE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIME", FIELD_TYPE_TIME, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATETIME", FIELD_TYPE_DATETIME	, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_YEAR", FIELD_TYPE_YEAR, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDATE", FIELD_TYPE_NEWDATE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_ENUM", FIELD_TYPE_ENUM, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SET", FIELD_TYPE_SET, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY_BLOB", FIELD_TYPE_TINY_BLOB, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_MEDIUM_BLOB", FIELD_TYPE_MEDIUM_BLOB, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG_BLOB", FIELD_TYPE_LONG_BLOB, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BLOB", FIELD_TYPE_BLOB, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_VAR_STRING", FIELD_TYPE_VAR_STRING, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_STRING", FIELD_TYPE_STRING, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_CHAR", FIELD_TYPE_CHAR, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INTERVAL", FIELD_TYPE_INTERVAL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_GEOMETRY", FIELD_TYPE_GEOMETRY, CONST_CS | CONST_PERSISTENT);#if MYSQL_VERSION_ID > 50002	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDECIMAL", FIELD_TYPE_NEWDECIMAL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BIT", FIELD_TYPE_BIT, CONST_CS | CONST_PERSISTENT);#endif	/* replication */#if !defined(HAVE_MYSQLND)	REGISTER_LONG_CONSTANT("MYSQLI_RPL_MASTER", MYSQL_RPL_MASTER, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_RPL_SLAVE", MYSQL_RPL_SLAVE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_RPL_ADMIN", MYSQL_RPL_ADMIN, CONST_CS | CONST_PERSISTENT);#endif		/* bind support */	REGISTER_LONG_CONSTANT("MYSQLI_NO_DATA", MYSQL_NO_DATA, CONST_CS | CONST_PERSISTENT);#ifdef MYSQL_DATA_TRUNCATED	REGISTER_LONG_CONSTANT("MYSQLI_DATA_TRUNCATED", MYSQL_DATA_TRUNCATED, CONST_CS | CONST_PERSISTENT);#endif	/* reporting */	REGISTER_LONG_CONSTANT("MYSQLI_REPORT_INDEX", MYSQLI_REPORT_INDEX, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ERROR", MYSQLI_REPORT_ERROR, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_REPORT_STRICT", MYSQLI_REPORT_STRICT, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ALL", MYSQLI_REPORT_ALL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", 0, CONST_CS | CONST_PERSISTENT);	return SUCCESS;}/* }}} *//* {{{ PHP_MSHUTDOWN_FUNCTION */PHP_MSHUTDOWN_FUNCTION(mysqli){	zend_hash_destroy(&mysqli_driver_properties);	zend_hash_destroy(&mysqli_result_properties);	zend_hash_destroy(&mysqli_stmt_properties);	zend_hash_destroy(&mysqli_warning_properties);	zend_hash_destroy(&mysqli_link_properties);	zend_hash_destroy(&classes);#ifdef HAVE_MYSQLND	mysqlnd_palloc_free_cache_reference(&(MyG(mysqlnd_zval_cache)));	mysqlnd_qcache_free_cache_reference(&(MyG(mysqlnd_qcache)));	mysqlnd_library_end();#endif	UNREGISTER_INI_ENTRIES();	return SUCCESS;}/* }}} *//* {{{ PHP_RINIT_FUNCTION */PHP_RINIT_FUNCTION(mysqli){	MyG(error_msg) = NULL;	MyG(error_no) = 0;#ifdef HAVE_MYSQLND	mysqlnd_palloc_rinit(MyG(mysqlnd_zval_cache));#endif	return SUCCESS;}/* }}} *//* {{{ PHP_RSHUTDOWN_FUNCTION */PHP_RSHUTDOWN_FUNCTION(mysqli){	if (MyG(error_msg)) {		efree(MyG(error_msg));	}#ifdef HAVE_MYSQLND	mysqlnd_palloc_rshutdown(MyG(mysqlnd_zval_cache));#endif	return SUCCESS;}/* }}} *//* {{{ mysqli_minfo_print_hash */#ifdef HAVE_MYSQLNDstaticvoid mysqli_minfo_print_hash(zval *values){	zval **values_entry;	HashPosition pos_values;	zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos_values);	while (zend_hash_get_current_data_ex(Z_ARRVAL_P(values), (void **)&values_entry, &pos_values) == SUCCESS) {#if PHP_MAJOR_VERSION >= 6		zstr	string_key;#else		char  *string_key;#endif		uint	string_key_len;		ulong	num_key;		zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &string_key, &string_key_len, &num_key, 0, &pos_values);		convert_to_string(*values_entry);#if PHP_MAJOR_VERSION >= 6		php_info_print_table_row(2, string_key, Z_STRVAL_PP(values_entry));#else		php_info_print_table_row(2, string_key, Z_STRVAL_PP(values_entry));#endif		zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos_values);	}}#endif/* }}} *//* {{{ PHP_MINFO_FUNCTION */PHP_MINFO_FUNCTION(mysqli){	php_info_print_table_start();	php_info_print_table_header(2, "MysqlI Support", "enabled");	php_info_print_table_row(2, "Client API library version", mysql_get_client_info());#if !defined(HAVE_MYSQLND)	php_info_print_table_row(2, "Client API header version", MYSQL_SERVER_VERSION);	php_info_print_table_row(2, "MYSQLI_SOCKET", MYSQL_UNIX_ADDR);#else	{		zval values;		/* Print client stats */		php_info_print_table_header(2, "Client statistics", "");		mysqlnd_get_client_stats(&values);		mysqli_minfo_print_hash(&values);		zval_dtor(&values);		php_info_print_table_header(2, "Persistent cache", MyG(mysqlnd_zval_cache)? "enabled":"disabled");				if (MyG(mysqlnd_zval_cache)) {			/* Now report cache status */			mysqlnd_palloc_stats(MyG(mysqlnd_zval_cache), &values);			mysqli_minfo_print_hash(&values);			zval_dtor(&values);		}	}#endif		php_info_print_table_end();	DISPLAY_INI_ENTRIES();}/* }}} *//* {{{ mixed mysqli_stmt_construct() Uconstructor for statement object.Parameters:   object -> mysqli_stmt_init  object, query -> mysqli_prepare*/ZEND_FUNCTION(mysqli_stmt_construct){	MY_MYSQL			*mysql;	zval  				*mysql_link;	MY_STMT				*stmt;	MYSQLI_RESOURCE 	*mysqli_resource;	char				*statement;	int					statement_len;	switch (ZEND_NUM_ARGS())	{		case 1:  /* mysql_stmt_init */	        if (zend_parse_parameters(1 TSRMLS_CC, "O", &mysql_link, mysqli_link_class_entry)==FAILURE) {				return;			}			MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);			stmt = (MY_STMT *)ecalloc(1,sizeof(MY_STMT));			stmt->stmt = mysql_stmt_init(mysql->mysql);		break;		case 2:			if (zend_parse_parameters(2 TSRMLS_CC, "Os&", &mysql_link, mysqli_link_class_entry, &statement, &statement_len, UG(utf8_conv))==FAILURE) {				return;			}			MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);			stmt = (MY_STMT *)ecalloc(1,sizeof(MY_STMT));			if ((stmt->stmt = mysql_stmt_init(mysql->mysql))) {				mysql_stmt_prepare(stmt->stmt, (char *)statement, statement_len);			}		break;		default:			WRONG_PARAM_COUNT;		break;	}	if (!stmt->stmt) {		efree(stmt);		RETURN_FALSE;	}	mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));	mysqli_resource->ptr = (void *)stmt;	mysqli_resource->status = (ZEND_NUM_ARGS() == 1) ? MYSQLI_STATUS_INITIALIZED : MYSQLI_STATUS_VALID;	((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->ptr = mysqli_resource;}/* }}} */

⌨️ 快捷键说明

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