From 67ef72018fa64b3b3790c10778611b673136737f Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Fri, 20 Aug 2010 12:25:17 +0000 Subject: [PATCH] Fix for bug #52654 mysqli doesn't install headers with structures it uses --- ext/mysqli/config.m4 | 1 + ext/mysqli/mysqli.c | 84 ++++---- ext/mysqli/mysqli_api.c | 1 + ext/mysqli/mysqli_exception.c | 1 + ext/mysqli/mysqli_fe.c | 1 + ext/mysqli/mysqli_fe.h | 270 ++++++++++++++++++++++++ ext/mysqli/mysqli_nonapi.c | 2 +- ext/mysqli/mysqli_priv.h | 312 ++++++++++++++++++++++++++++ ext/mysqli/mysqli_prop.c | 1 + ext/mysqli/mysqli_result_iterator.c | 1 + ext/mysqli/mysqli_warning.c | 1 + ext/mysqli/php_mysqli_structs.h | 225 +------------------- 12 files changed, 638 insertions(+), 262 deletions(-) create mode 100644 ext/mysqli/mysqli_fe.h create mode 100644 ext/mysqli/mysqli_priv.h diff --git a/ext/mysqli/config.m4 b/ext/mysqli/config.m4 index 5119c5cc0a..12df1fa3f0 100644 --- a/ext/mysqli/config.m4 +++ b/ext/mysqli/config.m4 @@ -80,6 +80,7 @@ if test "$PHP_MYSQLI" != "no"; then mysqli_exception.c mysqli_result_iterator.c $mysqli_extra_sources" PHP_NEW_EXTENSION(mysqli, $mysqli_sources, $ext_shared) PHP_SUBST(MYSQLI_SHARED_LIBADD) + PHP_INSTALL_HEADERS([ext/mysqli/php_mysqli_structs.h]) if test "$PHP_MYSQLI" = "mysqlnd"; then PHP_ADD_EXTENSION_DEP(mysqli, mysqlnd) diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index e84e4ec6ee..8049bb5414 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -31,6 +31,7 @@ #include "ext/standard/info.h" #include "ext/standard/php_string.h" #include "php_mysqli_structs.h" +#include "mysqli_priv.h" #include "zend_exceptions.h" #include "zend_interfaces.h" @@ -526,46 +527,6 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry *class_ /* }}} */ -/* Dependancies */ -static const 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 -#if defined(MYSQLI_USE_MYSQLND) - ZEND_MOD_REQUIRED("mysqlnd") -#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_MYSQLI -ZEND_GET_MODULE(mysqli) -#endif - /* {{{ PHP_INI_BEGIN */ PHP_INI_BEGIN() @@ -899,7 +860,6 @@ PHP_RINIT_FUNCTION(mysqli) } /* }}} */ - #ifdef MYSQLI_USE_MYSQLND static void php_mysqli_persistent_helper_for_every(void *p) { @@ -964,6 +924,48 @@ PHP_MINFO_FUNCTION(mysqli) } /* }}} */ + +/* Dependancies */ +static const 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 +#if defined(MYSQLI_USE_MYSQLND) + ZEND_MOD_REQUIRED("mysqlnd") +#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_MYSQLI +ZEND_GET_MODULE(mysqli) +#endif + + /* {{{ mixed mysqli_stmt_construct() constructor for statement object. Parameters: diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index bb19f665ce..1808c7ba54 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -31,6 +31,7 @@ #include "php_globals.h" #include "ext/standard/info.h" #include "php_mysqli_structs.h" +#include "mysqli_priv.h" /* {{{ proto mixed mysqli_affected_rows(object link) Get number of affected rows in previous MySQL operation */ diff --git a/ext/mysqli/mysqli_exception.c b/ext/mysqli/mysqli_exception.c index 2bf65d051c..14b6c51c74 100644 --- a/ext/mysqli/mysqli_exception.c +++ b/ext/mysqli/mysqli_exception.c @@ -26,6 +26,7 @@ #include "php_ini.h" #include "ext/standard/info.h" #include "php_mysqli_structs.h" +#include "mysqli_priv.h" #include "zend_exceptions.h" /* {{{ mysqli_exception_methods[] diff --git a/ext/mysqli/mysqli_fe.c b/ext/mysqli/mysqli_fe.c index a5b2a13684..ad82cbb372 100644 --- a/ext/mysqli/mysqli_fe.c +++ b/ext/mysqli/mysqli_fe.c @@ -30,6 +30,7 @@ #include "php_ini.h" #include "ext/standard/info.h" #include "php_mysqli_structs.h" +#include "mysqli_fe.h" #if PHP_VERSION_ID >= 50400 #define MYSQLI_ZEND_ARG_OBJ_INFO_LINK() ZEND_ARG_OBJ_INFO(0, link, mysqli, 0) diff --git a/ext/mysqli/mysqli_fe.h b/ext/mysqli/mysqli_fe.h new file mode 100644 index 0000000000..fbd06e4bac --- /dev/null +++ b/ext/mysqli/mysqli_fe.h @@ -0,0 +1,270 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2010 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Georg Richter | + Andrey Hristov | + +----------------------------------------------------------------------+ + + $Id: php_mysqli_structs.h 302179 2010-08-13 09:57:04Z andrey $ +*/ + +#ifndef MYSQLI_FE_H +#define MYSQLI_FE_H + +PHP_FUNCTION(mysqli); +PHP_FUNCTION(mysqli_affected_rows); +PHP_FUNCTION(mysqli_autocommit); +PHP_FUNCTION(mysqli_change_user); +PHP_FUNCTION(mysqli_character_set_name); +PHP_FUNCTION(mysqli_set_charset); +PHP_FUNCTION(mysqli_close); +PHP_FUNCTION(mysqli_commit); +PHP_FUNCTION(mysqli_connect); +PHP_FUNCTION(mysqli_connect_errno); +PHP_FUNCTION(mysqli_connect_error); +PHP_FUNCTION(mysqli_data_seek); +PHP_FUNCTION(mysqli_debug); +PHP_FUNCTION(mysqli_dump_debug_info); +PHP_FUNCTION(mysqli_errno); +PHP_FUNCTION(mysqli_error); +PHP_FUNCTION(mysqli_fetch_all); +PHP_FUNCTION(mysqli_fetch_array); +PHP_FUNCTION(mysqli_fetch_assoc); +PHP_FUNCTION(mysqli_fetch_object); +PHP_FUNCTION(mysqli_fetch_field); +PHP_FUNCTION(mysqli_fetch_fields); +PHP_FUNCTION(mysqli_fetch_field_direct); +PHP_FUNCTION(mysqli_fetch_lengths); +PHP_FUNCTION(mysqli_fetch_row); +PHP_FUNCTION(mysqli_field_count); +PHP_FUNCTION(mysqli_field_seek); +PHP_FUNCTION(mysqli_field_tell); +PHP_FUNCTION(mysqli_free_result); +PHP_FUNCTION(mysqli_get_cache_stats); +PHP_FUNCTION(mysqli_get_client_stats); +PHP_FUNCTION(mysqli_get_connection_stats); +PHP_FUNCTION(mysqli_get_charset); +PHP_FUNCTION(mysqli_get_client_info); +PHP_FUNCTION(mysqli_get_client_version); +PHP_FUNCTION(mysqli_get_host_info); +PHP_FUNCTION(mysqli_get_proto_info); +PHP_FUNCTION(mysqli_get_server_info); +PHP_FUNCTION(mysqli_get_server_version); +PHP_FUNCTION(mysqli_get_warnings); +PHP_FUNCTION(mysqli_info); +PHP_FUNCTION(mysqli_insert_id); +PHP_FUNCTION(mysqli_init); +PHP_FUNCTION(mysqli_kill); +PHP_FUNCTION(mysqli_link_construct); +PHP_FUNCTION(mysqli_set_local_infile_default); +PHP_FUNCTION(mysqli_set_local_infile_handler); +PHP_FUNCTION(mysqli_more_results); +PHP_FUNCTION(mysqli_multi_query); +PHP_FUNCTION(mysqli_next_result); +PHP_FUNCTION(mysqli_num_fields); +PHP_FUNCTION(mysqli_num_rows); +PHP_FUNCTION(mysqli_options); +PHP_FUNCTION(mysqli_ping); +PHP_FUNCTION(mysqli_poll); +PHP_FUNCTION(mysqli_prepare); +PHP_FUNCTION(mysqli_query); +PHP_FUNCTION(mysqli_stmt_result_metadata); +PHP_FUNCTION(mysqli_report); +PHP_FUNCTION(mysqli_read_query_result); +PHP_FUNCTION(mysqli_real_connect); +PHP_FUNCTION(mysqli_real_query); +PHP_FUNCTION(mysqli_real_escape_string); +PHP_FUNCTION(mysqli_reap_async_query); +PHP_FUNCTION(mysqli_rollback); +PHP_FUNCTION(mysqli_row_seek); +PHP_FUNCTION(mysqli_select_db); +PHP_FUNCTION(mysqli_stmt_attr_get); +PHP_FUNCTION(mysqli_stmt_attr_set); +PHP_FUNCTION(mysqli_stmt_bind_param); +PHP_FUNCTION(mysqli_stmt_bind_result); +PHP_FUNCTION(mysqli_stmt_execute); +PHP_FUNCTION(mysqli_stmt_field_count); +PHP_FUNCTION(mysqli_stmt_init); +PHP_FUNCTION(mysqli_stmt_prepare); +PHP_FUNCTION(mysqli_stmt_fetch); +PHP_FUNCTION(mysqli_stmt_param_count); +PHP_FUNCTION(mysqli_stmt_send_long_data); +PHP_FUNCTION(mysqli_embedded_server_end); +PHP_FUNCTION(mysqli_embedded_server_start); +PHP_FUNCTION(mysqli_sqlstate); +PHP_FUNCTION(mysqli_ssl_set); +PHP_FUNCTION(mysqli_stat); +PHP_FUNCTION(mysqli_refresh); +PHP_FUNCTION(mysqli_stmt_affected_rows); +PHP_FUNCTION(mysqli_stmt_close); +PHP_FUNCTION(mysqli_stmt_data_seek); +PHP_FUNCTION(mysqli_stmt_errno); +PHP_FUNCTION(mysqli_stmt_error); +PHP_FUNCTION(mysqli_stmt_free_result); +PHP_FUNCTION(mysqli_stmt_get_result); +PHP_FUNCTION(mysqli_stmt_get_warnings); +PHP_FUNCTION(mysqli_stmt_reset); +PHP_FUNCTION(mysqli_stmt_insert_id); +PHP_FUNCTION(mysqli_stmt_more_results); +PHP_FUNCTION(mysqli_stmt_next_result); +PHP_FUNCTION(mysqli_stmt_num_rows); +PHP_FUNCTION(mysqli_stmt_sqlstate); +PHP_FUNCTION(mysqli_stmt_store_result); +PHP_FUNCTION(mysqli_store_result); +PHP_FUNCTION(mysqli_thread_id); +PHP_FUNCTION(mysqli_thread_safe); +PHP_FUNCTION(mysqli_use_result); +PHP_FUNCTION(mysqli_warning_count); + +PHP_FUNCTION(mysqli_stmt_construct); +PHP_FUNCTION(mysqli_result_construct); +PHP_FUNCTION(mysqli_driver_construct); +PHP_METHOD(mysqli_warning,__construct); + +#endif /* MYSQLI_FE_H */ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2010 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Georg Richter | + Andrey Hristov | + +----------------------------------------------------------------------+ + + $Id: php_mysqli_structs.h 302179 2010-08-13 09:57:04Z andrey $ +*/ + +#ifndef MYSQLI_FE_H +#define MYSQLI_FE_H + +PHP_FUNCTION(mysqli); +PHP_FUNCTION(mysqli_affected_rows); +PHP_FUNCTION(mysqli_autocommit); +PHP_FUNCTION(mysqli_change_user); +PHP_FUNCTION(mysqli_character_set_name); +PHP_FUNCTION(mysqli_set_charset); +PHP_FUNCTION(mysqli_close); +PHP_FUNCTION(mysqli_commit); +PHP_FUNCTION(mysqli_connect); +PHP_FUNCTION(mysqli_connect_errno); +PHP_FUNCTION(mysqli_connect_error); +PHP_FUNCTION(mysqli_data_seek); +PHP_FUNCTION(mysqli_debug); +PHP_FUNCTION(mysqli_dump_debug_info); +PHP_FUNCTION(mysqli_errno); +PHP_FUNCTION(mysqli_error); +PHP_FUNCTION(mysqli_fetch_all); +PHP_FUNCTION(mysqli_fetch_array); +PHP_FUNCTION(mysqli_fetch_assoc); +PHP_FUNCTION(mysqli_fetch_object); +PHP_FUNCTION(mysqli_fetch_field); +PHP_FUNCTION(mysqli_fetch_fields); +PHP_FUNCTION(mysqli_fetch_field_direct); +PHP_FUNCTION(mysqli_fetch_lengths); +PHP_FUNCTION(mysqli_fetch_row); +PHP_FUNCTION(mysqli_field_count); +PHP_FUNCTION(mysqli_field_seek); +PHP_FUNCTION(mysqli_field_tell); +PHP_FUNCTION(mysqli_free_result); +PHP_FUNCTION(mysqli_get_cache_stats); +PHP_FUNCTION(mysqli_get_client_stats); +PHP_FUNCTION(mysqli_get_connection_stats); +PHP_FUNCTION(mysqli_get_charset); +PHP_FUNCTION(mysqli_get_client_info); +PHP_FUNCTION(mysqli_get_client_version); +PHP_FUNCTION(mysqli_get_host_info); +PHP_FUNCTION(mysqli_get_proto_info); +PHP_FUNCTION(mysqli_get_server_info); +PHP_FUNCTION(mysqli_get_server_version); +PHP_FUNCTION(mysqli_get_warnings); +PHP_FUNCTION(mysqli_info); +PHP_FUNCTION(mysqli_insert_id); +PHP_FUNCTION(mysqli_init); +PHP_FUNCTION(mysqli_kill); +PHP_FUNCTION(mysqli_link_construct); +PHP_FUNCTION(mysqli_set_local_infile_default); +PHP_FUNCTION(mysqli_set_local_infile_handler); +PHP_FUNCTION(mysqli_more_results); +PHP_FUNCTION(mysqli_multi_query); +PHP_FUNCTION(mysqli_next_result); +PHP_FUNCTION(mysqli_num_fields); +PHP_FUNCTION(mysqli_num_rows); +PHP_FUNCTION(mysqli_options); +PHP_FUNCTION(mysqli_ping); +PHP_FUNCTION(mysqli_poll); +PHP_FUNCTION(mysqli_prepare); +PHP_FUNCTION(mysqli_query); +PHP_FUNCTION(mysqli_stmt_result_metadata); +PHP_FUNCTION(mysqli_report); +PHP_FUNCTION(mysqli_read_query_result); +PHP_FUNCTION(mysqli_real_connect); +PHP_FUNCTION(mysqli_real_query); +PHP_FUNCTION(mysqli_real_escape_string); +PHP_FUNCTION(mysqli_reap_async_query); +PHP_FUNCTION(mysqli_rollback); +PHP_FUNCTION(mysqli_row_seek); +PHP_FUNCTION(mysqli_select_db); +PHP_FUNCTION(mysqli_stmt_attr_get); +PHP_FUNCTION(mysqli_stmt_attr_set); +PHP_FUNCTION(mysqli_stmt_bind_param); +PHP_FUNCTION(mysqli_stmt_bind_result); +PHP_FUNCTION(mysqli_stmt_execute); +PHP_FUNCTION(mysqli_stmt_field_count); +PHP_FUNCTION(mysqli_stmt_init); +PHP_FUNCTION(mysqli_stmt_prepare); +PHP_FUNCTION(mysqli_stmt_fetch); +PHP_FUNCTION(mysqli_stmt_param_count); +PHP_FUNCTION(mysqli_stmt_send_long_data); +PHP_FUNCTION(mysqli_embedded_server_end); +PHP_FUNCTION(mysqli_embedded_server_start); +PHP_FUNCTION(mysqli_sqlstate); +PHP_FUNCTION(mysqli_ssl_set); +PHP_FUNCTION(mysqli_stat); +PHP_FUNCTION(mysqli_refresh); +PHP_FUNCTION(mysqli_stmt_affected_rows); +PHP_FUNCTION(mysqli_stmt_close); +PHP_FUNCTION(mysqli_stmt_data_seek); +PHP_FUNCTION(mysqli_stmt_errno); +PHP_FUNCTION(mysqli_stmt_error); +PHP_FUNCTION(mysqli_stmt_free_result); +PHP_FUNCTION(mysqli_stmt_get_result); +PHP_FUNCTION(mysqli_stmt_get_warnings); +PHP_FUNCTION(mysqli_stmt_reset); +PHP_FUNCTION(mysqli_stmt_insert_id); +PHP_FUNCTION(mysqli_stmt_more_results); +PHP_FUNCTION(mysqli_stmt_next_result); +PHP_FUNCTION(mysqli_stmt_num_rows); +PHP_FUNCTION(mysqli_stmt_sqlstate); +PHP_FUNCTION(mysqli_stmt_store_result); +PHP_FUNCTION(mysqli_store_result); +PHP_FUNCTION(mysqli_thread_id); +PHP_FUNCTION(mysqli_thread_safe); +PHP_FUNCTION(mysqli_use_result); +PHP_FUNCTION(mysqli_warning_count); + +PHP_FUNCTION(mysqli_stmt_construct); +PHP_FUNCTION(mysqli_result_construct); +PHP_FUNCTION(mysqli_driver_construct); +PHP_METHOD(mysqli_warning,__construct); + +#endif /* MYSQLI_FE_H */ \ No newline at end of file diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c index e50fda93d0..1f52c858a0 100644 --- a/ext/mysqli/mysqli_nonapi.c +++ b/ext/mysqli/mysqli_nonapi.c @@ -30,6 +30,7 @@ #include "php_ini.h" #include "ext/standard/info.h" #include "php_mysqli_structs.h" +#include "mysqli_priv.h" #define SAFE_STR(a) ((a)?a:"") @@ -419,7 +420,6 @@ PHP_FUNCTION(mysqli_get_connection_stats) PHP_FUNCTION(mysqli_fetch_object) { php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQLI_ASSOC, 1); -/* todo: mysqlnd support */ } /* }}} */ diff --git a/ext/mysqli/mysqli_priv.h b/ext/mysqli/mysqli_priv.h new file mode 100644 index 0000000000..24778b9d1b --- /dev/null +++ b/ext/mysqli/mysqli_priv.h @@ -0,0 +1,312 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2010 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Georg Richter | + +----------------------------------------------------------------------+ + + $Id: php_mysqli_structs.h 302179 2010-08-13 09:57:04Z andrey $ +*/ + +#ifndef MYSQLI_PRIV_H +#define MYSQLI_PRIV_H + +#ifdef PHP_MYSQL_UNIX_SOCK_ADDR +#ifdef MYSQL_UNIX_ADDR +#undef MYSQL_UNIX_ADDR +#endif +#define MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR +#endif + +/* character set support */ +#if defined(MYSQLND_VERSION_ID) || MYSQL_VERSION_ID > 50009 +#define HAVE_MYSQLI_GET_CHARSET +#endif + +#if defined(MYSQLND_VERSION_ID) || (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 +#define HAVE_MYSQLI_SET_CHARSET +#endif + + +extern const zend_function_entry mysqli_functions[]; +extern const zend_function_entry mysqli_link_methods[]; +extern const zend_function_entry mysqli_stmt_methods[]; +extern const zend_function_entry mysqli_result_methods[]; +extern const zend_function_entry mysqli_driver_methods[]; +extern const zend_function_entry mysqli_warning_methods[]; +extern const zend_function_entry mysqli_exception_methods[]; + +extern const mysqli_property_entry mysqli_link_property_entries[]; +extern const mysqli_property_entry mysqli_result_property_entries[]; +extern const mysqli_property_entry mysqli_stmt_property_entries[]; +extern const mysqli_property_entry mysqli_driver_property_entries[]; +extern const mysqli_property_entry mysqli_warning_property_entries[]; + +extern zend_property_info mysqli_link_property_info_entries[]; +extern zend_property_info mysqli_result_property_info_entries[]; +extern zend_property_info mysqli_stmt_property_info_entries[]; +extern zend_property_info mysqli_driver_property_info_entries[]; +extern zend_property_info mysqli_warning_property_info_entries[]; + +extern int php_le_pmysqli(void); +extern void php_mysqli_dtor_p_elements(void *data); + +extern void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_status TSRMLS_DC); + +extern void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flag, int into_object); +extern void php_clear_stmt_bind(MY_STMT *stmt TSRMLS_DC); +extern void php_clear_mysql(MY_MYSQL *); +extern MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC); +extern void php_clear_warnings(MYSQLI_WARNING *w); +extern void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type); +extern void php_mysqli_report_error(const char *sqlstate, int errorno, const char *error TSRMLS_DC); +extern void php_mysqli_report_index(const char *query, unsigned int status TSRMLS_DC); +extern void php_set_local_infile_handler_default(MY_MYSQL *); +extern void php_mysqli_throw_sql_exception(char *sqlstate, int errorno TSRMLS_DC, char *format, ...); + +#ifdef HAVE_SPL +extern PHPAPI zend_class_entry *spl_ce_RuntimeException; +#endif + +#define REGISTER_MYSQLI_CLASS_ENTRY(name, mysqli_entry, class_functions) { \ + zend_class_entry ce; \ + INIT_CLASS_ENTRY(ce, name,class_functions); \ + ce.create_object = mysqli_objects_new; \ + mysqli_entry = zend_register_internal_class(&ce TSRMLS_CC); \ +} \ + +#define PHP_MYSQLI_EXPORT(__type) PHP_MYSQLI_API __type + +PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRMLS_DC); + + +#define MYSQLI_DISABLE_MQ if (mysql->multi_query) { \ + mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_OFF); \ + mysql->multi_query = 0; \ +} + +#define MYSQLI_ENABLE_MQ if (!mysql->multi_query) { \ + mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); \ + mysql->multi_query = 1; \ +} + + +#define MYSQLI_RETURN_LONG_LONG(__val) \ +{ \ + if ((__val) < LONG_MAX) { \ + RETURN_LONG((long) (__val)); \ + } else { \ + char *ret; \ + /* always used with my_ulonglong -> %llu */ \ + int l = spprintf(&ret, 0, MYSQLI_LLU_SPEC, (__val)); \ + RETURN_STRINGL(ret, l, 0); \ + } \ +} + +#define MYSQLI_STORE_RESULT 0 +#define MYSQLI_USE_RESULT 1 +#ifdef MYSQLI_USE_MYSQLND +#define MYSQLI_ASYNC 8 +#else +/* libmysql */ +#define MYSQLI_ASYNC 0 +#endif + +/* for mysqli_fetch_assoc */ +#define MYSQLI_ASSOC 1 +#define MYSQLI_NUM 2 +#define MYSQLI_BOTH 3 + +/* fetch types */ +#define FETCH_SIMPLE 1 +#define FETCH_RESULT 2 + +/*** REPORT MODES ***/ +#define MYSQLI_REPORT_OFF 0 +#define MYSQLI_REPORT_ERROR 1 +#define MYSQLI_REPORT_STRICT 2 +#define MYSQLI_REPORT_INDEX 4 +#define MYSQLI_REPORT_CLOSE 8 +#define MYSQLI_REPORT_ALL 255 + +#define MYSQLI_REPORT_MYSQL_ERROR(mysql) \ +if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_errno(mysql)) { \ + php_mysqli_report_error(mysql_sqlstate(mysql), mysql_errno(mysql), mysql_error(mysql) TSRMLS_CC); \ +} + +#define MYSQLI_REPORT_STMT_ERROR(stmt) \ +if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_stmt_errno(stmt)) { \ + php_mysqli_report_error(mysql_stmt_sqlstate(stmt), mysql_stmt_errno(stmt), mysql_stmt_error(stmt) TSRMLS_CC); \ +} + +void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_connect, zend_bool in_ctor); + +void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS); + +#endif /* MYSQLI_PRIV_H */ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2010 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Georg Richter | + +----------------------------------------------------------------------+ + + $Id: php_mysqli_structs.h 302179 2010-08-13 09:57:04Z andrey $ +*/ + +#ifndef MYSQLI_PRIV_H +#define MYSQLI_PRIV_H + +#ifdef PHP_MYSQL_UNIX_SOCK_ADDR +#ifdef MYSQL_UNIX_ADDR +#undef MYSQL_UNIX_ADDR +#endif +#define MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR +#endif + +/* character set support */ +#if defined(MYSQLND_VERSION_ID) || MYSQL_VERSION_ID > 50009 +#define HAVE_MYSQLI_GET_CHARSET +#endif + +#if defined(MYSQLND_VERSION_ID) || (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 +#define HAVE_MYSQLI_SET_CHARSET +#endif + + +extern const zend_function_entry mysqli_functions[]; +extern const zend_function_entry mysqli_link_methods[]; +extern const zend_function_entry mysqli_stmt_methods[]; +extern const zend_function_entry mysqli_result_methods[]; +extern const zend_function_entry mysqli_driver_methods[]; +extern const zend_function_entry mysqli_warning_methods[]; +extern const zend_function_entry mysqli_exception_methods[]; + +extern const mysqli_property_entry mysqli_link_property_entries[]; +extern const mysqli_property_entry mysqli_result_property_entries[]; +extern const mysqli_property_entry mysqli_stmt_property_entries[]; +extern const mysqli_property_entry mysqli_driver_property_entries[]; +extern const mysqli_property_entry mysqli_warning_property_entries[]; + +extern zend_property_info mysqli_link_property_info_entries[]; +extern zend_property_info mysqli_result_property_info_entries[]; +extern zend_property_info mysqli_stmt_property_info_entries[]; +extern zend_property_info mysqli_driver_property_info_entries[]; +extern zend_property_info mysqli_warning_property_info_entries[]; + +extern int php_le_pmysqli(void); +extern void php_mysqli_dtor_p_elements(void *data); + +extern void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_status TSRMLS_DC); + +extern void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flag, int into_object); +extern void php_clear_stmt_bind(MY_STMT *stmt TSRMLS_DC); +extern void php_clear_mysql(MY_MYSQL *); +extern MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC); +extern void php_clear_warnings(MYSQLI_WARNING *w); +extern void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type); +extern void php_mysqli_report_error(const char *sqlstate, int errorno, const char *error TSRMLS_DC); +extern void php_mysqli_report_index(const char *query, unsigned int status TSRMLS_DC); +extern void php_set_local_infile_handler_default(MY_MYSQL *); +extern void php_mysqli_throw_sql_exception(char *sqlstate, int errorno TSRMLS_DC, char *format, ...); + +#ifdef HAVE_SPL +extern PHPAPI zend_class_entry *spl_ce_RuntimeException; +#endif + +#define REGISTER_MYSQLI_CLASS_ENTRY(name, mysqli_entry, class_functions) { \ + zend_class_entry ce; \ + INIT_CLASS_ENTRY(ce, name,class_functions); \ + ce.create_object = mysqli_objects_new; \ + mysqli_entry = zend_register_internal_class(&ce TSRMLS_CC); \ +} \ + +#define PHP_MYSQLI_EXPORT(__type) PHP_MYSQLI_API __type + +PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRMLS_DC); + + +#define MYSQLI_DISABLE_MQ if (mysql->multi_query) { \ + mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_OFF); \ + mysql->multi_query = 0; \ +} + +#define MYSQLI_ENABLE_MQ if (!mysql->multi_query) { \ + mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); \ + mysql->multi_query = 1; \ +} + + +#define MYSQLI_RETURN_LONG_LONG(__val) \ +{ \ + if ((__val) < LONG_MAX) { \ + RETURN_LONG((long) (__val)); \ + } else { \ + char *ret; \ + /* always used with my_ulonglong -> %llu */ \ + int l = spprintf(&ret, 0, MYSQLI_LLU_SPEC, (__val)); \ + RETURN_STRINGL(ret, l, 0); \ + } \ +} + +#define MYSQLI_STORE_RESULT 0 +#define MYSQLI_USE_RESULT 1 +#ifdef MYSQLI_USE_MYSQLND +#define MYSQLI_ASYNC 8 +#else +/* libmysql */ +#define MYSQLI_ASYNC 0 +#endif + +/* for mysqli_fetch_assoc */ +#define MYSQLI_ASSOC 1 +#define MYSQLI_NUM 2 +#define MYSQLI_BOTH 3 + +/* fetch types */ +#define FETCH_SIMPLE 1 +#define FETCH_RESULT 2 + +/*** REPORT MODES ***/ +#define MYSQLI_REPORT_OFF 0 +#define MYSQLI_REPORT_ERROR 1 +#define MYSQLI_REPORT_STRICT 2 +#define MYSQLI_REPORT_INDEX 4 +#define MYSQLI_REPORT_CLOSE 8 +#define MYSQLI_REPORT_ALL 255 + +#define MYSQLI_REPORT_MYSQL_ERROR(mysql) \ +if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_errno(mysql)) { \ + php_mysqli_report_error(mysql_sqlstate(mysql), mysql_errno(mysql), mysql_error(mysql) TSRMLS_CC); \ +} + +#define MYSQLI_REPORT_STMT_ERROR(stmt) \ +if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_stmt_errno(stmt)) { \ + php_mysqli_report_error(mysql_stmt_sqlstate(stmt), mysql_stmt_errno(stmt), mysql_stmt_error(stmt) TSRMLS_CC); \ +} + +void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_connect, zend_bool in_ctor); + +void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS); + +#endif /* MYSQLI_PRIV_H */ \ No newline at end of file diff --git a/ext/mysqli/mysqli_prop.c b/ext/mysqli/mysqli_prop.c index 04d746566f..234edcaee9 100644 --- a/ext/mysqli/mysqli_prop.c +++ b/ext/mysqli/mysqli_prop.c @@ -28,6 +28,7 @@ #include "php_ini.h" #include "ext/standard/info.h" #include "php_mysqli_structs.h" +#include "mysqli_priv.h" #define CHECK_STATUS(value) \ if (!obj->ptr || ((MYSQLI_RESOURCE *)obj->ptr)->status < value ) { \ diff --git a/ext/mysqli/mysqli_result_iterator.c b/ext/mysqli/mysqli_result_iterator.c index a098fe2765..9a85fb0f8a 100644 --- a/ext/mysqli/mysqli_result_iterator.c +++ b/ext/mysqli/mysqli_result_iterator.c @@ -29,6 +29,7 @@ #include "php.h" #include "php_ini.h" #include "php_mysqli_structs.h" +#include "mysqli_priv.h" #include "zend_interfaces.h" diff --git a/ext/mysqli/mysqli_warning.c b/ext/mysqli/mysqli_warning.c index 2236db9262..1d5fe4cf80 100644 --- a/ext/mysqli/mysqli_warning.c +++ b/ext/mysqli/mysqli_warning.c @@ -26,6 +26,7 @@ #include "php_ini.h" #include "ext/standard/info.h" #include "php_mysqli_structs.h" +#include "mysqli_priv.h" /* Define these in the PHP5 tree to make merging easy process */ #define ZSTR_DUPLICATE (1<<0) diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h index 1760985701..6e34d5b5b7 100644 --- a/ext/mysqli/php_mysqli_structs.h +++ b/ext/mysqli/php_mysqli_structs.h @@ -85,25 +85,8 @@ #include #include #include "mysqli_libmysql.h" -#endif - -#ifdef PHP_MYSQL_UNIX_SOCK_ADDR -#ifdef MYSQL_UNIX_ADDR -#undef MYSQL_UNIX_ADDR -#endif -#define MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR -#endif +#endif /* MYSQLI_USE_MYSQLND */ -#include "php_mysqli.h" - -/* character set support */ -#if defined(MYSQLND_VERSION_ID) || MYSQL_VERSION_ID > 50009 -#define HAVE_MYSQLI_GET_CHARSET -#endif - -#if defined(MYSQLND_VERSION_ID) || (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 -#define HAVE_MYSQLI_SET_CHARSET -#endif #define MYSQLI_VERSION_ID 101009 @@ -196,7 +179,9 @@ typedef struct { #define PHP_MYSQLI_API __declspec(dllexport) #define MYSQLI_LLU_SPEC "%I64u" #define MYSQLI_LL_SPEC "%I64d" +#ifndef L64 #define L64(x) x##i64 +#endif typedef __int64 my_longlong; #else # if defined(__GNUC__) && __GNUC__ >= 4 @@ -208,7 +193,9 @@ typedef __int64 my_longlong; #include #define MYSQLI_LLU_SPEC "%" PRIu64 #define MYSQLI_LL_SPEC "%" PRId64 +#ifndef L64 #define L64(x) x##LL +#endif typedef int64_t my_longlong; #endif @@ -216,38 +203,6 @@ typedef int64_t my_longlong; #include "TSRM.h" #endif -#define PHP_MYSQLI_EXPORT(__type) PHP_MYSQLI_API __type - -extern const zend_function_entry mysqli_functions[]; -extern const zend_function_entry mysqli_link_methods[]; -extern const zend_function_entry mysqli_stmt_methods[]; -extern const zend_function_entry mysqli_result_methods[]; -extern const zend_function_entry mysqli_driver_methods[]; -extern const zend_function_entry mysqli_warning_methods[]; -extern const zend_function_entry mysqli_exception_methods[]; - -extern const mysqli_property_entry mysqli_link_property_entries[]; -extern const mysqli_property_entry mysqli_result_property_entries[]; -extern const mysqli_property_entry mysqli_stmt_property_entries[]; -extern const mysqli_property_entry mysqli_driver_property_entries[]; -extern const mysqli_property_entry mysqli_warning_property_entries[]; - -extern zend_property_info mysqli_link_property_info_entries[]; -extern zend_property_info mysqli_result_property_info_entries[]; -extern zend_property_info mysqli_stmt_property_info_entries[]; -extern zend_property_info mysqli_driver_property_info_entries[]; -extern zend_property_info mysqli_warning_property_info_entries[]; - -extern void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flag, int into_object); -extern void php_clear_stmt_bind(MY_STMT *stmt TSRMLS_DC); -extern void php_clear_mysql(MY_MYSQL *); -extern MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC); -extern void php_clear_warnings(MYSQLI_WARNING *w); -extern void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type); -extern void php_mysqli_report_error(const char *sqlstate, int errorno, const char *error TSRMLS_DC); -extern void php_mysqli_report_index(const char *query, unsigned int status TSRMLS_DC); -extern void php_set_local_infile_handler_default(MY_MYSQL *); -extern void php_mysqli_throw_sql_exception(char *sqlstate, int errorno TSRMLS_DC, char *format, ...); extern zend_class_entry *mysqli_link_class_entry; extern zend_class_entry *mysqli_stmt_class_entry; extern zend_class_entry *mysqli_result_class_entry; @@ -268,8 +223,6 @@ extern void php_mysqli_fetch_into_hash_aux(zval *return_value, MYSQL_RES * resul extern PHPAPI zend_class_entry *spl_ce_RuntimeException; #endif -PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRMLS_DC); - #define MYSQLI_DISABLE_MQ if (mysql->multi_query) { \ mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_OFF); \ mysql->multi_query = 0; \ @@ -370,58 +323,6 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML intern->ptr = NULL; \ } -#define MYSQLI_RETURN_LONG_LONG(__val) \ -{ \ - if ((__val) < LONG_MAX) { \ - RETURN_LONG((long) (__val)); \ - } else { \ - char *ret; \ - /* always used with my_ulonglong -> %llu */ \ - int l = spprintf(&ret, 0, MYSQLI_LLU_SPEC, (__val)); \ - RETURN_STRINGL(ret, l, 0); \ - } \ -} - -#define MYSQLI_STORE_RESULT 0 -#define MYSQLI_USE_RESULT 1 -#ifdef MYSQLI_USE_MYSQLND -#define MYSQLI_ASYNC 8 -#else -/* libmysql */ -#define MYSQLI_ASYNC 0 -#endif - -/* for mysqli_fetch_assoc */ -#define MYSQLI_ASSOC 1 -#define MYSQLI_NUM 2 -#define MYSQLI_BOTH 3 - -/* fetch types */ -#define FETCH_SIMPLE 1 -#define FETCH_RESULT 2 - -/*** REPORT MODES ***/ -#define MYSQLI_REPORT_OFF 0 -#define MYSQLI_REPORT_ERROR 1 -#define MYSQLI_REPORT_STRICT 2 -#define MYSQLI_REPORT_INDEX 4 -#define MYSQLI_REPORT_CLOSE 8 -#define MYSQLI_REPORT_ALL 255 - -#define MYSQLI_REPORT_MYSQL_ERROR(mysql) \ -if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_errno(mysql)) { \ - php_mysqli_report_error(mysql_sqlstate(mysql), mysql_errno(mysql), mysql_error(mysql) TSRMLS_CC); \ -} - -#define MYSQLI_REPORT_STMT_ERROR(stmt) \ -if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_stmt_errno(stmt)) { \ - php_mysqli_report_error(mysql_stmt_sqlstate(stmt), mysql_stmt_errno(stmt), mysql_stmt_error(stmt) TSRMLS_CC); \ -} - -void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_connect, zend_bool in_ctor); - -void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS); - ZEND_BEGIN_MODULE_GLOBALS(mysqli) long default_link; @@ -459,122 +360,6 @@ ZEND_END_MODULE_GLOBALS(mysqli) ZEND_EXTERN_MODULE_GLOBALS(mysqli) - -PHP_MINIT_FUNCTION(mysqli); -PHP_MSHUTDOWN_FUNCTION(mysqli); -PHP_RINIT_FUNCTION(mysqli); -PHP_RSHUTDOWN_FUNCTION(mysqli); -PHP_MINFO_FUNCTION(mysqli); - -PHP_FUNCTION(mysqli); -PHP_FUNCTION(mysqli_affected_rows); -PHP_FUNCTION(mysqli_autocommit); -PHP_FUNCTION(mysqli_change_user); -PHP_FUNCTION(mysqli_character_set_name); -PHP_FUNCTION(mysqli_set_charset); -PHP_FUNCTION(mysqli_close); -PHP_FUNCTION(mysqli_commit); -PHP_FUNCTION(mysqli_connect); -PHP_FUNCTION(mysqli_connect_errno); -PHP_FUNCTION(mysqli_connect_error); -PHP_FUNCTION(mysqli_data_seek); -PHP_FUNCTION(mysqli_debug); -PHP_FUNCTION(mysqli_dump_debug_info); -PHP_FUNCTION(mysqli_errno); -PHP_FUNCTION(mysqli_error); -PHP_FUNCTION(mysqli_fetch_all); -PHP_FUNCTION(mysqli_fetch_array); -PHP_FUNCTION(mysqli_fetch_assoc); -PHP_FUNCTION(mysqli_fetch_object); -PHP_FUNCTION(mysqli_fetch_field); -PHP_FUNCTION(mysqli_fetch_fields); -PHP_FUNCTION(mysqli_fetch_field_direct); -PHP_FUNCTION(mysqli_fetch_lengths); -PHP_FUNCTION(mysqli_fetch_row); -PHP_FUNCTION(mysqli_field_count); -PHP_FUNCTION(mysqli_field_seek); -PHP_FUNCTION(mysqli_field_tell); -PHP_FUNCTION(mysqli_free_result); -PHP_FUNCTION(mysqli_get_client_stats); -PHP_FUNCTION(mysqli_get_connection_stats); -PHP_FUNCTION(mysqli_get_charset); -PHP_FUNCTION(mysqli_get_client_info); -PHP_FUNCTION(mysqli_get_client_version); -PHP_FUNCTION(mysqli_get_host_info); -PHP_FUNCTION(mysqli_get_proto_info); -PHP_FUNCTION(mysqli_get_server_info); -PHP_FUNCTION(mysqli_get_server_version); -PHP_FUNCTION(mysqli_get_warnings); -PHP_FUNCTION(mysqli_info); -PHP_FUNCTION(mysqli_insert_id); -PHP_FUNCTION(mysqli_init); -PHP_FUNCTION(mysqli_kill); -PHP_FUNCTION(mysqli_link_construct); -PHP_FUNCTION(mysqli_set_local_infile_default); -PHP_FUNCTION(mysqli_set_local_infile_handler); -PHP_FUNCTION(mysqli_more_results); -PHP_FUNCTION(mysqli_multi_query); -PHP_FUNCTION(mysqli_next_result); -PHP_FUNCTION(mysqli_num_fields); -PHP_FUNCTION(mysqli_num_rows); -PHP_FUNCTION(mysqli_options); -PHP_FUNCTION(mysqli_ping); -PHP_FUNCTION(mysqli_poll); -PHP_FUNCTION(mysqli_prepare); -PHP_FUNCTION(mysqli_query); -PHP_FUNCTION(mysqli_stmt_result_metadata); -PHP_FUNCTION(mysqli_report); -PHP_FUNCTION(mysqli_read_query_result); -PHP_FUNCTION(mysqli_real_connect); -PHP_FUNCTION(mysqli_real_query); -PHP_FUNCTION(mysqli_real_escape_string); -PHP_FUNCTION(mysqli_reap_async_query); -PHP_FUNCTION(mysqli_rollback); -PHP_FUNCTION(mysqli_row_seek); -PHP_FUNCTION(mysqli_select_db); -PHP_FUNCTION(mysqli_stmt_attr_get); -PHP_FUNCTION(mysqli_stmt_attr_set); -PHP_FUNCTION(mysqli_stmt_bind_param); -PHP_FUNCTION(mysqli_stmt_bind_result); -PHP_FUNCTION(mysqli_stmt_execute); -PHP_FUNCTION(mysqli_stmt_field_count); -PHP_FUNCTION(mysqli_stmt_init); -PHP_FUNCTION(mysqli_stmt_prepare); -PHP_FUNCTION(mysqli_stmt_fetch); -PHP_FUNCTION(mysqli_stmt_param_count); -PHP_FUNCTION(mysqli_stmt_send_long_data); -PHP_FUNCTION(mysqli_embedded_server_end); -PHP_FUNCTION(mysqli_embedded_server_start); -PHP_FUNCTION(mysqli_sqlstate); -PHP_FUNCTION(mysqli_ssl_set); -PHP_FUNCTION(mysqli_stat); -PHP_FUNCTION(mysqli_refresh); -PHP_FUNCTION(mysqli_stmt_affected_rows); -PHP_FUNCTION(mysqli_stmt_close); -PHP_FUNCTION(mysqli_stmt_data_seek); -PHP_FUNCTION(mysqli_stmt_errno); -PHP_FUNCTION(mysqli_stmt_error); -PHP_FUNCTION(mysqli_stmt_free_result); -PHP_FUNCTION(mysqli_stmt_get_result); -PHP_FUNCTION(mysqli_stmt_get_warnings); -PHP_FUNCTION(mysqli_stmt_reset); -PHP_FUNCTION(mysqli_stmt_insert_id); -PHP_FUNCTION(mysqli_stmt_more_results); -PHP_FUNCTION(mysqli_stmt_next_result); -PHP_FUNCTION(mysqli_stmt_num_rows); -PHP_FUNCTION(mysqli_stmt_sqlstate); -PHP_FUNCTION(mysqli_stmt_store_result); -PHP_FUNCTION(mysqli_store_result); -PHP_FUNCTION(mysqli_thread_id); -PHP_FUNCTION(mysqli_thread_safe); -PHP_FUNCTION(mysqli_use_result); -PHP_FUNCTION(mysqli_warning_count); - -PHP_FUNCTION(mysqli_stmt_construct); -PHP_FUNCTION(mysqli_result_construct); -PHP_FUNCTION(mysqli_driver_construct); -PHP_METHOD(mysqli_warning,__construct); - #endif /* PHP_MYSQLI_STRUCTS.H */ -- 2.40.0