diff options
author | Georg Richter <georg@php.net> | 2003-11-22 21:20:07 +0000 |
---|---|---|
committer | Georg Richter <georg@php.net> | 2003-11-22 21:20:07 +0000 |
commit | 230b207849e883a08e361b250eb4a0fd367b3e01 (patch) | |
tree | 65651b4158f90b9c0b31e3703a09d089eae7336f /ext/mysqli/php_mysqli.h | |
parent | 28b6c35d80bcdaab0cce5652550f2233c4e9577b (diff) | |
download | php-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.h | 48 |
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 |