summaryrefslogtreecommitdiff
path: root/ext/mysqli/php_mysqli.h
diff options
context:
space:
mode:
authorGeorg Richter <georg@php.net>2003-11-22 21:20:07 +0000
committerGeorg Richter <georg@php.net>2003-11-22 21:20:07 +0000
commit230b207849e883a08e361b250eb4a0fd367b3e01 (patch)
tree65651b4158f90b9c0b31e3703a09d089eae7336f /ext/mysqli/php_mysqli.h
parent28b6c35d80bcdaab0cce5652550f2233c4e9577b (diff)
downloadphp-git-230b207849e883a08e361b250eb4a0fd367b3e01.tar.gz
- Added multiquery support:
mysqli_multi_query mysqli_more_results mysqli_next_results - added read-only properties (and removed methods) object mysql affected_rows client_flags client_version errno, error, host, host_info, info server_capabilities, server_version sqlstate, port, protocol_version, server_language thread_id, user, warning_count object result current_field, field_count, lengths, num_rows, type object stmt query, param_count, field_count, id, errno, error, sqlstate - added constructor - minor fixes, prototypes
Diffstat (limited to 'ext/mysqli/php_mysqli.h')
-rw-r--r--ext/mysqli/php_mysqli.h48
1 files changed, 44 insertions, 4 deletions
diff --git a/ext/mysqli/php_mysqli.h b/ext/mysqli/php_mysqli.h
index 0d0f15f1dd..2b35876723 100644
--- a/ext/mysqli/php_mysqli.h
+++ b/ext/mysqli/php_mysqli.h
@@ -57,10 +57,17 @@ typedef struct {
} MYSQLI_RESOURCE;
typedef struct _mysqli_object {
- zend_object zo;
- void *ptr;
+ zend_object zo;
+ void *ptr;
+ HashTable *prop_handler;
} mysqli_object; /* extends zend_object */
+typedef struct _mysqli_property_entry {
+ char *pname;
+ int (*r_func)(mysqli_object *obj, zval **retval TSRMLS_DC);
+ int (*w_func)(mysqli_object *obj, zval **retval TSRMLS_DC);
+} mysqli_property_entry;
+
#define MYSQLI_PR_MAIN 0
#define MYSQLI_PR_MYSQL 1
#define MYSQLI_PR_QUERY 2
@@ -90,6 +97,10 @@ extern function_entry mysqli_functions[];
extern function_entry mysqli_link_methods[];
extern function_entry mysqli_stmt_methods[];
extern function_entry mysqli_result_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 void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flag, int into_object);
extern void php_clear_stmt_bind(STMT *stmt);
extern void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type);
@@ -104,6 +115,16 @@ zend_class_entry _mysqli_result_class_entry;
PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRMLS_DC);
+#define MYSQLI_DISABLE_MQ if (MyG(multi_query)) { \
+ mysql_set_server_option(mysql, MYSQL_OPTION_MULTI_STATEMENTS_OFF); \
+ MyG(multi_query) = 0; \
+}
+
+#define MYSQLI_ENABLE_MQ if (!MyG(multi_query)) { \
+ mysql_set_server_option(mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); \
+ MyG(multi_query) = 1; \
+}
+
#define REGISTER_MYSQLI_CLASS_ENTRY(name, mysqli_entry, class_functions) { \
INIT_CLASS_ENTRY(_##mysqli_entry,name,class_functions); \
_##mysqli_entry.create_object = mysqli_objects_new; \
@@ -165,11 +186,20 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
} \
}
-#define MYSQLI_STORE_RESULT 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, NULL TSRMLS_CC); \
+ i++; \
+ }\
+}
+
+#define MYSQLI_STORE_RESULT 0
#define MYSQLI_USE_RESULT 1
/* for mysqli_fetch_assoc */
-#define MYSQLI_ASSOC 1
+#define MYSQLI_ASSOC 1
#define MYSQLI_NUM 2
#define MYSQLI_BOTH 3
@@ -194,6 +224,7 @@ 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_bind_param);
@@ -241,6 +272,9 @@ PHP_FUNCTION(mysqli_insert_id);
PHP_FUNCTION(mysqli_init);
PHP_FUNCTION(mysqli_kill);
PHP_FUNCTION(mysqli_master_query);
+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);
@@ -301,11 +335,17 @@ ZEND_BEGIN_MODULE_GLOBALS(mysqli)
long error_no;
char *error_msg;
unsigned int profiler;
+ unsigned int multi_query;
#ifdef HAVE_EMBEDDED_MYSQLI
unsigned int embedded;
#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