summaryrefslogtreecommitdiff
path: root/ext/mysqli/php_mysqli.h
diff options
context:
space:
mode:
authorGeorg Richter <georg@php.net>2006-05-09 11:27:20 +0000
committerGeorg Richter <georg@php.net>2006-05-09 11:27:20 +0000
commitb6d7fdf46576c36ada6d4fe602f37bf5f0553d72 (patch)
tree1b424ac82f11ebdb78c192ab65e17450f9f8e2b4 /ext/mysqli/php_mysqli.h
parent1a0f27a7078765450102d6ece73c25f39d8082d2 (diff)
downloadphp-git-b6d7fdf46576c36ada6d4fe602f37bf5f0553d72.tar.gz
Merge from 5.2
Diffstat (limited to 'ext/mysqli/php_mysqli.h')
-rw-r--r--ext/mysqli/php_mysqli.h74
1 files changed, 44 insertions, 30 deletions
diff --git a/ext/mysqli/php_mysqli.h b/ext/mysqli/php_mysqli.h
index 54bddadd52..d908996291 100644
--- a/ext/mysqli/php_mysqli.h
+++ b/ext/mysqli/php_mysqli.h
@@ -43,6 +43,13 @@
#define MYSQLI_VERSION_ID 101008
+enum mysqli_status {
+ MYSQLI_STATUS_UNKNOWN=0,
+ MYSQLI_STATUS_CLEARED,
+ MYSQLI_STATUS_INITIALIZED,
+ MYSQLI_STATUS_VALID
+};
+
typedef struct {
ulong buflen;
char *val;
@@ -64,10 +71,10 @@ typedef struct {
} MY_STMT;
typedef struct {
- MYSQL *mysql;
- zval *li_read;
- php_stream *li_stream;
- unsigned int multi_query;
+ MYSQL *mysql;
+ zval *li_read;
+ php_stream *li_stream;
+ unsigned int multi_query;
} MY_MYSQL;
typedef struct {
@@ -77,14 +84,14 @@ typedef struct {
} PROFILER;
typedef struct {
- void *ptr; /* resource: (mysql, result, stmt) */
- void *info; /* additional buffer */
+ 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;
- char valid;
HashTable *prop_handler;
} mysqli_object; /* extends zend_object */
@@ -110,8 +117,16 @@ typedef struct {
#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) x##LL
+typedef long long my_longlong;
#endif
#ifdef ZTS
@@ -149,12 +164,12 @@ 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, ...);
-zend_class_entry *mysqli_link_class_entry;
-zend_class_entry *mysqli_stmt_class_entry;
-zend_class_entry *mysqli_result_class_entry;
-zend_class_entry *mysqli_driver_class_entry;
-zend_class_entry *mysqli_warning_class_entry;
-zend_class_entry *mysqli_exception_class_entry;
+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;
#ifdef HAVE_SPL
extern PHPAPI zend_class_entry *spl_ce_RuntimeException;
@@ -179,14 +194,13 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
mysqli_entry = zend_register_internal_class(&ce TSRMLS_CC); \
} \
-#define MYSQLI_REGISTER_RESOURCE_EX(__ptr, __zval, __ce) \
- ((mysqli_object *) zend_object_store_get_object(__zval TSRMLS_CC))->ptr = __ptr; \
- ((mysqli_object *) zend_object_store_get_object(__zval TSRMLS_CC))->valid = 1;
+#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, __ce)
+ MYSQLI_REGISTER_RESOURCE_EX(__ptr, return_value)
#define MYSQLI_REGISTER_RESOURCE(__ptr, __ce) \
{\
@@ -196,10 +210,10 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
Z_TYPE_P(object) = IS_OBJECT;\
(object)->value.obj = mysqli_objects_new(__ce TSRMLS_CC);\
}\
- MYSQLI_REGISTER_RESOURCE_EX(__ptr, object, __ce)\
+ MYSQLI_REGISTER_RESOURCE_EX(__ptr, object)\
}
-#define MYSQLI_FETCH_RESOURCE(__ptr, __type, __id, __name) \
+#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);\
@@ -207,18 +221,18 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", intern->zo.ce->name);\
RETURN_NULL();\
}\
- if (!intern->valid) { \
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid resource %s", intern->zo.ce->name); \
- RETURN_NULL(); \
- } \
__ptr = (__type)my_res->ptr; \
- if (!strcmp((char *)__name, "mysqli_stmt")) {\
- if (!((MY_STMT *)__ptr)->stmt->mysql) {\
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Statement isn't valid anymore");\
- RETURN_NULL();\
- }\
+ 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) \
{ \
@@ -411,7 +425,7 @@ PHP_FUNCTION(mysqli_warning_count);
ZEND_FUNCTION(mysqli_stmt_construct);
ZEND_FUNCTION(mysqli_result_construct);
ZEND_FUNCTION(mysqli_driver_construct);
-PHP_METHOD(mysqli_warning, __construct);
+ZEND_FUNCTION(mysqli_warning_construct);
ZEND_BEGIN_MODULE_GLOBALS(mysqli)
long default_link;