Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

PHP mysqlnd svn commit: r508 - trunk/php6/ext/mysqli

From: <ahristov(at)mysql.com>
Date: Wed Jun 27 2007 - 04:27:59 EDT


Author: ahristov
Date: 2007-06-27 10:27:58 +0200 (Wed, 27 Jun 2007) New Revision: 508

Added:

   trunk/php6/ext/mysqli/php_mysqli_structs.h Modified:

   trunk/php6/ext/mysqli/config.w32
   trunk/php6/ext/mysqli/config9.m4
   trunk/php6/ext/mysqli/mysqli.c
   trunk/php6/ext/mysqli/mysqli_api.c
   trunk/php6/ext/mysqli/mysqli_driver.c
   trunk/php6/ext/mysqli/mysqli_embedded.c
   trunk/php6/ext/mysqli/mysqli_exception.c
   trunk/php6/ext/mysqli/mysqli_fe.c
   trunk/php6/ext/mysqli/mysqli_nonapi.c
   trunk/php6/ext/mysqli/mysqli_prop.c
   trunk/php6/ext/mysqli/mysqli_repl.c
   trunk/php6/ext/mysqli/mysqli_report.c
   trunk/php6/ext/mysqli/mysqli_warning.c
   trunk/php6/ext/mysqli/php_mysqli.h

Log:
Merge from PHP5 branch

Modified: trunk/php6/ext/mysqli/config.w32


  • trunk/php6/ext/mysqli/config.w32 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/config.w32 2007-06-27 08:27:58 UTC (rev 508)
    @@ -1,28 +1,64 @@ // $Id: config.w32,v 1.7 2005/06/05 19:25:01 wez Exp $ // vim:ft=javascript

+// Note: The extension name is "mysqli", you enable it with "--with-mysqli".
+// The "--enable-mysqlnd" tells to use "mysqli", if enabled, with the bundled
+// client library to connect to the MySQL server, i.e. no external MySQL
+// client library is needed to perform the build.
+

 ARG_WITH("mysqli", "MySQLi support", "no");
-ARG_ENABLE("mysqlnd", "Enable MySQL native driver", "no");

+ARG_ENABLE("mysqlnd", "MySQLi with mysqlnd support", "no");
 
-if (PHP_MYSQLND != "no") {
-  AC_DEFINE('HAVE_MYSQLND', 1, "MySQL native driver support enabled")
-  ADD_SOURCES(configure_module_dirname + "/mysqlnd", 
-                  "mysqlnd.c mysqlnd_charset.c mysqlnd_wireprotocol.c \
-                  mysqlnd_ps.c mysqlnd_loaddata.c mysqlnd_palloc.c \
-                  mysqlnd_ps_codec.c mysqlnd_statistics.c mysqlnd_qcache.c \
-				  mysqlnd_result.c");
-}

+if (PHP_MYSQLI != "no") {
 
-if (PHP_MYSQLI != "no") {
-  if (PHP_MYSQLND != "yes") {
-  	if (CHECK_LIB("libmysql.lib", "mysqli", PHP_MYSQLI) &&
-			CHECK_HEADER_ADD_INCLUDE("mysql.h", "CFLAGS_MYSQLI", PHP_MYSQLI + "\\include;" + PHP_PHP_BUILD + "\\include\\mysql;" +                               PHP_MYSQLI)) {
-		  AC_DEFINE('HAVE_MYSQLILIB', 1, 'Have MySQLi library');
-      ADD_SOURCES(configure_module_dirname, "mysqli_repl.c");
-  	} else {
-	  	WARNING("mysqli not enabled; libraries and headers not found");
-  	} 

+ mysqli_source =
+ "mysqli.c " +
+ "mysqli_api.c " +
+ "mysqli_driver.c " +
+ "mysqli_embedded.c " +
+ "mysqli_exception.c " +
+ "mysqli_fe.c " +
+ "mysqli_nonapi.c " +
+ "mysqli_prop.c " +
+ "mysqli_report.c " +
+ "mysqli_warning.c";
+
+ if (PHP_MYSQLND == "no") {
+ if (CHECK_LIB("libmysql.lib", "mysqli", PHP_MYSQLI) &&
+ CHECK_HEADER_ADD_INCLUDE("mysql.h", "CFLAGS_MYSQLI", PHP_MYSQLI +
+ "\\include;" + PHP_PHP_BUILD +
+ "\\include\\mysql;" + PHP_MYSQLI)) {
+ // No "mysqli_repl.c" when using "mysqlnd"
+ mysqli_extra_sources = "mysqli_repl.c";
+ EXTENSION("mysqli", mysqli_source + " " + mysqli_extra_sources);
+ AC_DEFINE('HAVE_MYSQLILIB', 1, 'Have MySQLi library');
+ } else {
+ WARNING("mysqli not enabled; libraries and headers not found");
+ }
+
+ } else {
+
+ mysqlnd_source =
+ "mysqlnd.c " +
+// "mysqlnd_alloc.c " +
+ "mysqlnd_charset.c " +
+ "mysqlnd_loaddata.c " +
+ "mysqlnd_palloc.c " +
+ "mysqlnd_ps.c " +
+ "mysqlnd_ps_codec.c " +
+ "mysqlnd_qcache.c " +
+ "mysqlnd_result.c " +
+ "mysqlnd_result_meta.c " +
+ "mysqlnd_statistics.c " +
+ "mysqlnd_wireprotocol.c";
+
+ EXTENSION("mysqli", mysqli_source);
+ // Specify that add "mysqlnd" sources, but use same object file
+ // directory as the "mysqli" sources
+ // FIXME the hard coded "ext/mysqli/mysqlnd" prevents pointing
+ // out sources in another directory? Like above: PHP_MYSQLI + "\\include;"
+ ADD_SOURCES("ext/mysqli/mysqlnd", mysqlnd_source, "mysqli");
+ AC_DEFINE('HAVE_MYSQLILIB', 1, 'Have MySQLi library');
+ AC_DEFINE('HAVE_MYSQLND' , 1, 'MySQL native driver support enabled');

   }
- EXTENSION("mysqli", "mysqli.c mysqli_api.c mysqli_prop.c mysqli_nonapi.c mysqli_fe.c mysqli_report.c mysqli_driver.c mysqli_warning.c mysqli_exception.c"); -
 }

Modified: trunk/php6/ext/mysqli/config9.m4


  • trunk/php6/ext/mysqli/config9.m4 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/config9.m4 2007-06-27 08:27:58 UTC (rev 508)
    @@ -3,32 +3,18 @@ dnl config.m4 for extension mysqli

 PHP_ARG_WITH(mysqli, for MySQLi support, -[ --with-mysqli[=FILE] Include MySQLi support. FILE is the optional pathname

-                          to mysql_config])

+[ --with-mysqli[=FILE] Include MySQLi support. FILE is the optional pathname to mysql_config.
+ If mysqlnd is passed as FILE, the MySQL native driver will be used])
Do you need help?X

 PHP_ARG_ENABLE(embedded_mysqli, whether to enable embedded MySQLi support,  [ --enable-embedded-mysqli MYSQLi: Enable embedded support], no, no)  

-if test -z "$PHP_MYSQLND"; then
-  PHP_ARG_ENABLE(mysqlnd, whether to enable MySQL native driver support,
-  [  --enable-mysqlnd          MYSQLi: Enable MySQL native driver supprt], no, no)
Do you need more help?X
-fi

+if test "$PHP_MYSQLI" = "mysqlnd"; then
+ dnl This needs to be set in any extension which wishes to use mysqlnd
+ PHP_MYSQLND_ENABLED=yes
 
-dnl If some extension uses mysqlnd it will get compiled in PHP whether MYSQLi is enabled or not.
-if test "$PHP_MYSQLND" = "yes"; then
-  AC_DEFINE(HAVE_MYSQLND, 1, [MySQL native driver support enabled])
-  mysqlnd_sources="mysqlnd.c mysqlnd_charset.c mysqlnd_wireprotocol.c \
-                   mysqlnd_ps.c mysqlnd_loaddata.c mysqlnd_palloc.c \
-                   mysqlnd_ps_codec.c mysqlnd_statistics.c mysqlnd_qcache.c \
-				   mysqlnd_result.c mysqlnd_result_meta.c"

+elif test "$PHP_MYSQLI" != "no"; then
 
  • PHP_ADD_SOURCES(ext/mysqli/mysqlnd, $mysqlnd_sources)
  • PHP_ADD_BUILD_DIR([ext/mysqli/mysqlnd])
  • PHP_INSTALL_HEADERS([ext/mysqli/mysqlnd]) -fi - -if test "$PHP_MYSQLI" != "no" && test "$PHP_MYSQLND" != "yes"; then - if test "$PHP_MYSQLI" = "yes"; then MYSQL_CONFIG=`$php_shtool path mysql_config` else @@ -77,10 +63,31 @@ extra_sources="$extra_sources mysqli_repl.c" fi

+dnl Build extension

 if test -n "$extra_sources" || test "$PHP_MYSQLI" != "no"; then    mysqli_sources="mysqli.c mysqli_api.c mysqli_prop.c mysqli_nonapi.c \

                   mysqli_fe.c mysqli_report.c mysqli_driver.c mysqli_warning.c \
                   mysqli_exception.c $extra_sources"
   PHP_NEW_EXTENSION(mysqli, $mysqli_sources, $ext_shared)    PHP_SUBST(MYSQLI_SHARED_LIBADD)
+
+ dnl These 3 lines are neeeded to be able to build ext/mysql and/or ext/mysqli with/without mysqlnd.
+ dnl Need to do this here for the file to be always available.
+ $php_shtool mkdir -p ext/mysqli/
+ echo > ext/mysqli/php_have_mysqlnd.h
+ test "$PHP_MYSQLI" = "mysqlnd" && PHP_DEFINE(HAVE_MYSQLND, 1, [ext/mysqli])
 fi
+
+dnl MySQLnd build
+dnl If some extension uses mysqlnd it will get compiled in PHP whether MYSQLi is enabled or not.
+if test "$PHP_MYSQLND_ENABLED" = "yes"; then
+ mysqlnd_sources="mysqlnd.c mysqlnd_charset.c mysqlnd_wireprotocol.c \
+ mysqlnd_ps.c mysqlnd_loaddata.c mysqlnd_palloc.c \
+ mysqlnd_ps_codec.c mysqlnd_statistics.c mysqlnd_qcache.c\
+ mysqlnd_result.c mysqlnd_result_meta.c"
+
+ PHP_ADD_SOURCES(ext/mysqli/mysqlnd, $mysqlnd_sources)
+ PHP_ADD_BUILD_DIR([ext/mysqli/mysqlnd])
+ PHP_INSTALL_HEADERS([ext/mysqli/mysqlnd])
+fi
+

Modified: trunk/php6/ext/mysqli/mysqli.c


  • trunk/php6/ext/mysqli/mysqli.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -30,7 +30,7 @@ #include "php_ini.h" #include "ext/standard/info.h" #include "ext/standard/php_string.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"
    #include "zend_exceptions.h"

 #define MYSQLI_STORE_RESULT 0

Modified: trunk/php6/ext/mysqli/mysqli_api.c


  • trunk/php6/ext/mysqli/mysqli_api.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_api.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -29,7 +29,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"

 /* {{{ proto mixed mysqli_affected_rows(object link) U

    Get number of affected rows in previous MySQL operation */

Modified: trunk/php6/ext/mysqli/mysqli_driver.c


  • trunk/php6/ext/mysqli/mysqli_driver.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_driver.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -29,7 +29,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"
    #include "zend_exceptions.h"
Can we help you?X

Modified: trunk/php6/ext/mysqli/mysqli_embedded.c


  • trunk/php6/ext/mysqli/mysqli_embedded.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_embedded.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -27,7 +27,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"

 /* {{{ proto bool mysqli_embedded_server_start(bool start, array arguments, array groups)

    initialize and start embedded server */

Modified: trunk/php6/ext/mysqli/mysqli_exception.c


  • trunk/php6/ext/mysqli/mysqli_exception.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_exception.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -27,7 +27,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"
    #include "zend_exceptions.h"

 /* {{{ mysqli_exception_methods[]

Modified: trunk/php6/ext/mysqli/mysqli_fe.c


  • trunk/php6/ext/mysqli/mysqli_fe.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_fe.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -29,7 +29,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"

 static

Modified: trunk/php6/ext/mysqli/mysqli_nonapi.c


  • trunk/php6/ext/mysqli/mysqli_nonapi.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_nonapi.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -29,7 +29,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"
Can't find what you're looking for?X

 #define SAFE_STR(a) ((a)?a:"")  

Modified: trunk/php6/ext/mysqli/mysqli_prop.c


  • trunk/php6/ext/mysqli/mysqli_prop.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_prop.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -29,7 +29,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"

 #define CHECK_STATUS(value) \

         if (((MYSQLI_RESOURCE *)obj->ptr)->status < value ) { \

Modified: trunk/php6/ext/mysqli/mysqli_repl.c


  • trunk/php6/ext/mysqli/mysqli_repl.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_repl.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -29,7 +29,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"

 /* {{{ proto void mysqli_disable_reads_from_master(object link)  */

Modified: trunk/php6/ext/mysqli/mysqli_report.c


  • trunk/php6/ext/mysqli/mysqli_report.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_report.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -27,7 +27,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"

 /* {{{ proto bool mysqli_report(int flags) U

Don't know where to look next?X

    sets report level */

Modified: trunk/php6/ext/mysqli/mysqli_warning.c


  • trunk/php6/ext/mysqli/mysqli_warning.c 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/mysqli_warning.c 2007-06-27 08:27:58 UTC (rev 508)
    @@ -28,7 +28,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_mysqli.h"
    +#include "php_mysqli_structs.h"

 /* {{{ void php_clear_warnings() */

Modified: trunk/php6/ext/mysqli/php_mysqli.h


  • trunk/php6/ext/mysqli/php_mysqli.h 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/php_mysqli.h 2007-06-27 08:27:58 UTC (rev 508)
    @@ -20,332 +20,10 @@ $Id: php_mysqli.h,v 1.63 2007/01/01 09:29:26 sebastian Exp $ */
-/* A little hack to prevent build break, when mysql is used together with
- * c-client, which also defines LIST.
- */
-#ifdef LIST
-#undef LIST
-#endif
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-
-#if defined(HAVE_MYSQLND)
-#include "ext/mysqli/mysqlnd/mysqlnd.h"
-#include "ext/mysqli/mysqli_mysqlnd.h"
-#else
-#include 
-#include 
-#include "ext/mysqli/mysqli_libmysql.h"
-#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
-
-#define MYSQLI_UC_UTF8	1
-#define MYSQLI_UC_UCS2	2
-

 #ifndef PHP_MYSQLI_H
 #define PHP_MYSQLI_H  

-#define MYSQLI_VERSION_ID 101009  

-enum mysqli_status {
-	MYSQLI_STATUS_UNKNOWN=0,
-	MYSQLI_STATUS_CLEARED,
-	MYSQLI_STATUS_INITIALIZED,
-	MYSQLI_STATUS_VALID
-};
-
-typedef struct {
-	void			*buf;		/* buffer: binary or unicode data */	
-	unsigned int	buflen;		/* buffer length */
-	zend_uchar		buftype;	/* buffer type */
-	UErrorCode		status;		/* error code */
-} MYSQLI_STRING;
-
-typedef struct {
-	ulong		buflen;
Confused? Frustrated?X
- char *val; - ulong type; -} VAR_BUFFER; - -typedef struct { - unsigned int var_cnt; - VAR_BUFFER *buf; - zval **vars; - char *is_null; -} BIND_BUFFER; - -typedef struct { - MYSQL_STMT *stmt; - BIND_BUFFER param; - BIND_BUFFER result; - char *query; -} MY_STMT; - -typedef struct { - MYSQL *mysql; - zval *li_read; - php_stream *li_stream; - zend_bool persistent; - unsigned int multi_query; - UConverter *conv; -} MY_MYSQL; - -typedef struct { - int mode; - int socket; - FILE *fp; -} PROFILER; - -typedef struct { - void *ptr; /* resource: (mysql, result, stmt) */ - void *info; /* additional buffer */ - enum mysqli_status status; /* object status */ -} MYSQLI_RESOURCE; - -typedef struct _mysqli_object { - zend_object zo; - void *ptr; - HashTable *prop_handler; -} mysqli_object; /* extends zend_object */ - -typedef struct st_mysqli_warning MYSQLI_WARNING; - -struct st_mysqli_warning { - zval reason; - zval sqlstate; - int errorno; - MYSQLI_WARNING *next; -}; - -typedef struct _mysqli_property_entry { - char *pname; - int (*r_func)(mysqli_object *obj, zval **retval TSRMLS_DC); - int (*w_func)(mysqli_object *obj, zval *value TSRMLS_DC); -} mysqli_property_entry; - -#if !defined(HAVE_MYSQLND) -typedef struct { - char error_msg[LOCAL_INFILE_ERROR_LEN]; - void *userdata; -} mysqli_local_infile; -#endif - -#define phpext_mysqli_ptr &mysqli_module_entry - -#ifdef PHP_WIN32 -#define PHP_MYSQLI_API __declspec(dllexport) -#define MYSQLI_LLU_SPEC "%I64u" -#define MYSQLI_LL_SPEC "%I64d" -#define L64(x) x##i64 -typedef __int64 my_longlong; -#else -#define PHP_MYSQLI_API -#define MYSQLI_LLU_SPEC "%llu" -#define MYSQLI_LL_SPEC "%lld" -#define L64(x) xlistsL -typedef long long my_longlong; -#endif - -#ifdef ZTS -#include "TSRM.h" -#endif - -#define PHP_MYSQLI_EXPORT(__type) PHP_MYSQLI_API __type
Call Pantek today for Open Source Technical Support at 1-877-546-8934 - 24/7/365X
- -extern zend_module_entry mysqli_module_entry; -extern zend_function_entry mysqli_functions[]; -extern zend_function_entry mysqli_link_methods[]; -extern zend_function_entry mysqli_stmt_methods[]; -extern zend_function_entry mysqli_result_methods[]; -extern zend_function_entry mysqli_driver_methods[]; -extern zend_function_entry mysqli_warning_methods[]; -extern zend_function_entry mysqli_exception_methods[]; - -extern mysqli_property_entry mysqli_link_property_entries[]; -extern mysqli_property_entry mysqli_result_property_entries[]; -extern mysqli_property_entry mysqli_stmt_property_entries[]; -extern mysqli_property_entry mysqli_driver_property_entries[]; -extern mysqli_property_entry mysqli_warning_property_entries[]; - -#ifdef HAVE_MYSQLND -extern MYSQLND_ZVAL_PCACHE *mysqli_mysqlnd_zval_cache; -extern MYSQLND_QCACHE *mysqli_mysqlnd_qcache; -#endif - -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 int php_local_infile_init(void **, const char *, void *); -extern int php_local_infile_read(void *, char *, uint); -extern void php_local_infile_end(void *); -extern int php_local_infile_error(void *, char *, uint); -extern void php_set_local_infile_handler_default(MY_MYSQL *);
Do you need help?X
-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; -extern zend_class_entry *mysqli_driver_class_entry; -extern zend_class_entry *mysqli_warning_class_entry; -extern zend_class_entry *mysqli_exception_class_entry; -extern int php_le_pmysqli(void); - -#ifdef HAVE_SPL -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; \ -} - -#define MYSQLI_ENABLE_MQ if (!mysql->multi_query) { \ - mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); \ - mysql->multi_query = 1; \ -} - -#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 MYSQLI_REGISTER_RESOURCE_EX(__ptr, __zval) \ - ((mysqli_object *) zend_object_store_get_object(__zval TSRMLS_CC))->ptr = __ptr; - -#define MYSQLI_RETURN_RESOURCE(__ptr, __ce) \ - Z_TYPE_P(return_value) = IS_OBJECT; \ - (return_value)->value.obj = mysqli_objects_new(__ce TSRMLS_CC); \ - MYSQLI_REGISTER_RESOURCE_EX(__ptr, return_value) - -#define MYSQLI_REGISTER_RESOURCE(__ptr, __ce) \ -{\ - zval *object = getThis();\ - if (!object || !instanceof_function(Z_OBJCE_P(object), mysqli_link_class_entry TSRMLS_CC)) {\ - object = return_value;\
Do you need more help?X
- Z_TYPE_P(object) = IS_OBJECT;\ - (object)->value.obj = mysqli_objects_new(__ce TSRMLS_CC);\ - }\ - MYSQLI_REGISTER_RESOURCE_EX(__ptr, object)\ -} - -#define MYSQLI_FETCH_RESOURCE(__ptr, __type, __id, __name, __check) \ -{ \ - MYSQLI_RESOURCE *my_res; \ - mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\ - if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {\ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %v", intern->zo.ce->name);\ - RETURN_NULL();\ - }\ - __ptr = (__type)my_res->ptr; \ - if (__check && my_res->status < __check) { \ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid object or resource %v\n", intern->zo.ce->name); \ - RETURN_NULL();\ - }\ -} - -#define MYSQLI_SET_STATUS(__id, __value) \ -{ \ - mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\ - ((MYSQLI_RESOURCE *)intern->ptr)->status = __value; \ -} \ - -#define MYSQLI_CLEAR_RESOURCE(__id) \ -{ \ - mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\ - efree(intern->ptr); \ - intern->ptr = NULL; \ -} - -#define MYSQLI_RETURN_LONG_LONG(__val) \ -{ \ - if ((__val) < LONG_MAX) { \ - RETURN_LONG((__val)); \ - } else { \ - char *ret; \ - int l = spprintf(&ret, 0, "%llu", (__val)); \ - RETURN_STRINGL(ret, l, 0); \ - } \ -} - -#define MYSQLI_ADD_PROPERTIES(a,b) \ -{ \ - int i = 0; \ - while (b[i].pname != NULL) { \ - mysqli_add_property(a, b[i].pname, (mysqli_read_t)b[i].r_func, (mysqli_write_t)b[i].w_func TSRMLS_CC); \ - i++; \ - }\ -} - -#if WIN32|WINNT -#define SCLOSE(a) closesocket(a) -#else -#define SCLOSE(a) close(a) -#endif - -#define MYSQLI_STORE_RESULT 0 -#define MYSQLI_USE_RESULT 1 - -/* for mysqli_fetch_assoc */
Can we help you?X
-#define MYSQLI_ASSOC 1 -#define MYSQLI_NUM 2 -#define MYSQLI_BOTH 3 - -/* for mysqli_bind_param */ -#define MYSQLI_BIND_INT 1 -#define MYSQLI_BIND_DOUBLE 2 -#define MYSQLI_BIND_STRING 3 -#define MYSQLI_BIND_SEND_DATA 4 - -/* 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); \ -} - -PHP_MYSQLI_API void mysqli_register_link(zval *return_value, void *link TSRMLS_DC); -PHP_MYSQLI_API void mysqli_register_stmt(zval *return_value, void *stmt TSRMLS_DC); -PHP_MYSQLI_API void mysqli_register_result(zval *return_value, void *result TSRMLS_DC); -PHP_MYSQLI_API void php_mysqli_set_error(long mysql_errno, char *mysql_err TSRMLS_DC); - PHP_MINIT_FUNCTION(mysqli);

 PHP_MSHUTDOWN_FUNCTION(mysqli);
 PHP_RINIT_FUNCTION(mysqli);
@@ -357,9 +35,7 @@
 PHP_FUNCTION(mysqli_autocommit);
 PHP_FUNCTION(mysqli_change_user);
 PHP_FUNCTION(mysqli_character_set_name);
-#ifdef HAVE_MYSQLI_SET_CHARSET
 PHP_FUNCTION(mysqli_set_charset);
-#endif
 PHP_FUNCTION(mysqli_close);
 PHP_FUNCTION(mysqli_commit);
 PHP_FUNCTION(mysqli_connect);

@@ -374,9 +50,7 @@
 PHP_FUNCTION(mysqli_enable_rpl_parse);
 PHP_FUNCTION(mysqli_errno);
 PHP_FUNCTION(mysqli_error);

-#ifdef HAVE_MYSQLND
 PHP_FUNCTION(mysqli_fetch_all);
-#endif
 PHP_FUNCTION(mysqli_fetch_array);
 PHP_FUNCTION(mysqli_fetch_assoc);
 PHP_FUNCTION(mysqli_fetch_object);
Can't find what you're looking for?X

@@ -389,14 +63,10 @@
 PHP_FUNCTION(mysqli_field_seek);
 PHP_FUNCTION(mysqli_field_tell);
 PHP_FUNCTION(mysqli_free_result);

-#if defined(HAVE_MYSQLND)
 PHP_FUNCTION(mysqli_get_cache_stats);
 PHP_FUNCTION(mysqli_get_client_stats);
 PHP_FUNCTION(mysqli_get_connection_stats);
-#endif
-#ifdef HAVE_MYSQLI_GET_CHARSET
 PHP_FUNCTION(mysqli_get_charset);
-#endif
 PHP_FUNCTION(mysqli_get_client_info);
 PHP_FUNCTION(mysqli_get_client_version);
 PHP_FUNCTION(mysqli_get_host_info);

@@ -456,9 +126,7 @@
 PHP_FUNCTION(mysqli_stmt_errno);
 PHP_FUNCTION(mysqli_stmt_error);
 PHP_FUNCTION(mysqli_stmt_free_result);

-#if defined(HAVE_MYSQLND)
 PHP_FUNCTION(mysqli_stmt_get_result);
-#endif
 PHP_FUNCTION(mysqli_stmt_get_warnings);
 PHP_FUNCTION(mysqli_stmt_reset);
 PHP_FUNCTION(mysqli_stmt_insert_id);

@@ -476,45 +144,10 @@
 ZEND_FUNCTION(mysqli_driver_construct);  ZEND_METHOD(mysqli_warning,__construct);  
-ZEND_BEGIN_MODULE_GLOBALS(mysqli)
-	long			default_link;
-	long			num_links;
-	long			max_links;
-	long			cache_size;
-	unsigned int	default_port;
-	char			*default_host;
-	char			*default_user;
-	char			*default_socket;
-	char			*default_pw;
-	int				reconnect;
-	int				strict;
-	long			error_no;
-	char			*error_msg;
-	int				report_mode;
-	HashTable		*report_ht;
-	unsigned int	multi_query;
-	unsigned int	embedded;
-#ifdef HAVE_MYSQLND
-	MYSQLND_THD_ZVAL_PCACHE	*mysqlnd_thd_zval_cache;
-#endif
-ZEND_END_MODULE_GLOBALS(mysqli)
 

+#define phpext_mysqli_ptr &mysqli_module_entry
+extern zend_module_entry mysqli_module_entry;
 

-#define MYSQLI_PROPERTY(a) extern int a(mysqli_object *obj, zval **retval TSRMLS_DC)
-
-MYSQLI_PROPERTY(my_prop_link_host);
-
-#ifdef ZTS
-#define MyG(v) TSRMG(mysqli_globals_id, zend_mysqli_globals *, v)
-#else
-#define MyG(v) (mysqli_globals.v)
-#endif
-
-#define my_estrdup(x) (x) ? estrdup(x) : NULL
-#define my_efree(x) if (x) efree(x)
-
-ZEND_EXTERN_MODULE_GLOBALS(mysqli)
-
 #endif	/* PHP_MYSQLI.H */
 
 

Added: trunk/php6/ext/mysqli/php_mysqli_structs.h


  • trunk/php6/ext/mysqli/php_mysqli_structs.h 2007-06-27 08:13:14 UTC (rev 507)
    +++ trunk/php6/ext/mysqli/php_mysqli_structs.h 2007-06-27 08:27:58 UTC (rev 508)
    @@ -0,0 +1,399 @@
    +/*
    + +----------------------------------------------------------------------+
    + | PHP Version 5 |
    + +----------------------------------------------------------------------+
    + | Copyright (c) 1997-2007 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 <georg@php.net> |
    + +----------------------------------------------------------------------+
    +
    + $Id: php_mysqli.h,v 1.54.2.7.2.5 2007/02/24 14:33:50 helly Exp $
    +*/
    +
    +#ifndef PHP_MYSQLI_STRUCTS_H
    +#define PHP_MYSQLI_STRUCTS_H
    +
    +/* A little hack to prevent build break, when mysql is used together with
    + * c-client, which also defines LIST.
    + */
    +#ifdef LIST
    +#undef LIST
    +#endif
    +
    +#ifndef TRUE
    +#define TRUE 1
    +#endif
    +
    +#ifndef FALSE
    +#define FALSE 0
    +#endif
    +
    +#ifdef PHP_ATOM_INC
    +#include "ext/mysqli/php_have_mysqlnd.h" /* HAVE_MYSQLND is defined here if enabled */
    +#endif
    +
    +#if defined(HAVE_MYSQLND)
    +#include "ext/mysqli/mysqlnd/mysqlnd.h"
    +#include "ext/mysqli/mysqli_mysqlnd.h"
    +#else
    +#include <mysql.h>
    +#include <errmsg.h>
    +#include "ext/mysqli/mysqli_libmysql.h"
    +#endif
    +
    +#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_UC_UTF8 1
    +#define MYSQLI_UC_UCS2 2
    +
    +#define MYSQLI_VERSION_ID 101009
    +
    +enum mysqli_status {
    + MYSQLI_STATUS_UNKNOWN=0,
    + MYSQLI_STATUS_CLEARED,
    + MYSQLI_STATUS_INITIALIZED,
    + MYSQLI_STATUS_VALID
    +};
    +
    +typedef struct {
    + void *buf; /* buffer: binary or unicode data */
    + unsigned int buflen; /* buffer length */
    + zend_uchar buftype; /* buffer type */
    + UErrorCode status; /* error code */
    +} MYSQLI_STRING;
    +
    +
    +typedef struct {
    + ulong buflen;
    + char *val;
    + ulong type;
    +} VAR_BUFFER;
    +
    +typedef struct {
    + unsigned int var_cnt;
    + VAR_BUFFER *buf;
    + zval **vars;
    + char *is_null;
    +} BIND_BUFFER;
    +
    +typedef struct {
    + MYSQL_STMT *stmt;
    + BIND_BUFFER param;
    + BIND_BUFFER result;
    + char *query;
    +} MY_STMT;
    +
    +typedef struct {
    + MYSQL *mysql;
    + zval *li_read;
    + php_stream *li_stream;
    + zend_bool persistent;
    + unsigned int multi_query;
    + UConverter *conv;
    +} MY_MYSQL;
    +
    +typedef struct {
    + int mode;
    + int socket;
    + FILE *fp;
    +} PROFILER;
    +
    +typedef struct {
    + void *ptr; /* resource: (mysql, result, stmt) */
    + void *info; /* additional buffer */
    + enum mysqli_status status; /* object status */
    +} MYSQLI_RESOURCE;
    +
    +typedef struct _mysqli_object {
    + zend_object zo;
    + void *ptr;
    + HashTable *prop_handler;
    +} mysqli_object; /* extends zend_object */
    +
    +typedef struct st_mysqli_warning MYSQLI_WARNING;
    +
    +struct st_mysqli_warning {
    + zval reason;
    + zval sqlstate;
    + int errorno;
    + MYSQLI_WARNING *next;
    +};
    +
    +typedef struct _mysqli_property_entry {
    + char *pname;
    + int (*r_func)(mysqli_object *obj, zval **retval TSRMLS_DC);
    + int (*w_func)(mysqli_object *obj, zval *value TSRMLS_DC);
    +} mysqli_property_entry;
    +
    +#if !defined(HAVE_MYSQLND)
    +typedef struct {
    + char error_msg[LOCAL_INFILE_ERROR_LEN];
    + void *userdata;
    +} mysqli_local_infile;
    +#endif
    +
    +#ifdef PHP_WIN32
    +#define PHP_MYSQLI_API __declspec(dllexport)
    +#define MYSQLI_LLU_SPEC "%I64u"
    +#define MYSQLI_LL_SPEC "%I64d"
    +#define L64(x) x##i64
    +typedef __int64 my_longlong;
    +#else
    +#define PHP_MYSQLI_API
    +#define MYSQLI_LLU_SPEC "%llu"
    +#define MYSQLI_LL_SPEC "%lld"
    +#define L64(x) xlistsL
    +typedef long long my_longlong;
    +#endif
    +
    +#ifdef ZTS
    +#include "TSRM.h"
    +#endif
    +
    +#define PHP_MYSQLI_EXPORT(__type) PHP_MYSQLI_API __type
    +
    +extern zend_function_entry mysqli_functions[];
    +extern zend_function_entry mysqli_link_methods[];
    +extern zend_function_entry mysqli_stmt_methods[];
    +extern zend_function_entry mysqli_result_methods[];
    +extern zend_function_entry mysqli_driver_methods[];
    +extern zend_function_entry mysqli_warning_methods[];
    +extern zend_function_entry mysqli_exception_methods[];
    +
    +extern mysqli_property_entry mysqli_link_property_entries[];
    +extern mysqli_property_entry mysqli_result_property_entries[];
    +extern mysqli_property_entry mysqli_stmt_property_entries[];
    +extern mysqli_property_entry mysqli_driver_property_entries[];
    +extern mysqli_property_entry mysqli_warning_property_entries[];
    +
    +#ifdef HAVE_MYSQLND
    +extern MYSQLND_ZVAL_PCACHE *mysqli_mysqlnd_zval_cache;
    +extern MYSQLND_QCACHE *mysqli_mysqlnd_qcache;
    +#endif
    +
    +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 int php_local_infile_init(void **, const char *, void *);
    +extern int php_local_infile_read(void *, char *, uint);
    +extern void php_local_infile_end(void *);
    +extern int php_local_infile_error(void *, char *, uint);
    +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;
    +extern zend_class_entry *mysqli_driver_class_entry;
    +extern zend_class_entry *mysqli_warning_class_entry;
    +extern zend_class_entry *mysqli_exception_class_entry;
    +extern int php_le_pmysqli(void);
    +
    +#ifdef HAVE_SPL
    +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; \
    +}
    +
    +#define MYSQLI_ENABLE_MQ if (!mysql->multi_query) { \
    + mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); \
    + mysql->multi_query = 1; \
    +}
    +
    +#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 MYSQLI_REGISTER_RESOURCE_EX(__ptr, __zval) \
    + ((mysqli_object *) zend_object_store_get_object(__zval TSRMLS_CC))->ptr = __ptr;
    +
    +#define MYSQLI_RETURN_RESOURCE(__ptr, __ce) \
    + Z_TYPE_P(return_value) = IS_OBJECT; \
    + (return_value)->value.obj = mysqli_objects_new(__ce TSRMLS_CC); \
    + MYSQLI_REGISTER_RESOURCE_EX(__ptr, return_value)
    +
    +#define MYSQLI_REGISTER_RESOURCE(__ptr, __ce) \
    +{\
    + zval *object = getThis();\
    + if (!object || !instanceof_function(Z_OBJCE_P(object), mysqli_link_class_entry TSRMLS_CC)) {\
    + object = return_value;\
    + Z_TYPE_P(object) = IS_OBJECT;\
    + (object)->value.obj = mysqli_objects_new(__ce TSRMLS_CC);\
    + }\
    + MYSQLI_REGISTER_RESOURCE_EX(__ptr, object)\
    +}
    +
    +#define MYSQLI_FETCH_RESOURCE(__ptr, __type, __id, __name, __check) \
    +{ \
    + MYSQLI_RESOURCE *my_res; \
    + mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
    + if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {\
    + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", intern->zo.ce->name);\
    + RETURN_NULL();\
    + }\
    + __ptr = (__type)my_res->ptr; \
    + if (__check && my_res->status < __check) { \
    + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid object or resource %s\n", intern->zo.ce->name); \
    + RETURN_NULL();\
    + }\
    +}
    +
    +#define MYSQLI_SET_STATUS(__id, __value) \
    +{ \
    + mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
    + ((MYSQLI_RESOURCE *)intern->ptr)->status = __value; \
    +} \
    +
    +#define MYSQLI_CLEAR_RESOURCE(__id) \
    +{ \
    + mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
    + efree(intern->ptr); \
    + intern->ptr = NULL; \
    +}
    +
    +#define MYSQLI_RETURN_LONG_LONG(__val) \
    +{ \
    + if ((__val) < LONG_MAX) { \
    + RETURN_LONG((__val)); \
    + } else { \
    + char *ret; \
    + int l = spprintf(&ret, 0, "%llu", (__val)); \
    + RETURN_STRINGL(ret, l, 0); \
    + } \
    +}
    +
    +#define MYSQLI_ADD_PROPERTIES(a,b) \
    +{ \
    + int i = 0; \
    + while (b[i].pname != NULL) { \
    + mysqli_add_property(a, b[i].pname, (mysqli_read_t)b[i].r_func, (mysqli_write_t)b[i].w_func TSRMLS_CC); \
    + i++; \
    + }\
    +}
    +
    +#if WIN32|WINNT
    +#define SCLOSE(a) closesocket(a)
    +#else
    +#define SCLOSE(a) close(a)
    +#endif
    +
    +#define MYSQLI_STORE_RESULT 0
    +#define MYSQLI_USE_RESULT 1
    +
    +/* for mysqli_fetch_assoc */
    +#define MYSQLI_ASSOC 1
    +#define MYSQLI_NUM 2
    +#define MYSQLI_BOTH 3
    +
    +/* for mysqli_bind_param */
    +#define MYSQLI_BIND_INT 1
    +#define MYSQLI_BIND_DOUBLE 2
    +#define MYSQLI_BIND_STRING 3
    +#define MYSQLI_BIND_SEND_DATA 4
    +
    +/* 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); \
    +}
    +
    +PHP_MYSQLI_API void mysqli_register_link(zval *return_value, void *link TSRMLS_DC);
    +PHP_MYSQLI_API void mysqli_register_stmt(zval *return_value, void *stmt TSRMLS_DC);
    +PHP_MYSQLI_API void mysqli_register_result(zval *return_value, void *result TSRMLS_DC);
    +PHP_MYSQLI_API void php_mysqli_set_error(long mysql_errno, char *mysql_err TSRMLS_DC);
    +
    +ZEND_BEGIN_MODULE_GLOBALS(mysqli)
    + long default_link;
    + long num_links;
    + long max_links;
    + long cache_size;
    + unsigned int default_port;
    + char *default_host;
    + char *default_user;
    + char *default_socket;
    + char *default_pw;
    + int reconnect;
    + int strict;
    + long error_no;
    + char *error_msg;
    + int report_mode;
    + HashTable *report_ht;
    + unsigned int multi_query;
    + unsigned int embedded;
    +#ifdef HAVE_MYSQLND
    + MYSQLND_THD_ZVAL_PCACHE *mysqlnd_thd_zval_cache;
    +#endif
    +ZEND_END_MODULE_GLOBALS(mysqli)
    +
    +#define MYSQLI_PROPERTY(a) extern int a(mysqli_object *obj, zval **retval TSRMLS_DC)
    +
    +MYSQLI_PROPERTY(my_prop_link_host);
    +
    +#ifdef ZTS
    +#define MyG(v) TSRMG(mysqli_globals_id, zend_mysqli_globals *, v)
    +#else
    +#define MyG(v) (mysqli_globals.v)
    +#endif
    +
    +#define my_estrdup(x) (x) ? estrdup(x) : NULL
    +#define my_efree(x) if (x) efree(x)
    +
    +ZEND_EXTERN_MODULE_GLOBALS(mysqli)
    +
    +#endif /* PHP_MYSQLI_STRUCTS.H */
    +
    +
    +/*
    + * Local variables:
    + * tab-width: 4
    + * c-basic-offset: 4
    + * indent-tabs-mode: t
    + * End:
    + * vim600: noet sw=4 ts=4 fdm=marker
    + * vim<600: noet sw=4 ts=4
    + */
-- 
MySQL Code Commits Mailing List
For list archives: 
http://lists.mysql.com/commits
To unsubscribe:    
http://lists.mysql.com/commits?unsub=lists@pantek.com
Received on Wed Jun 27 04:28:30 2007

This archive was generated by hypermail 2.1.8 : Wed Jun 27 2007 - 04:30:02 EDT

Don't know where to look next?X

Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library