📄 php_mysqli.h
字号:
/* +----------------------------------------------------------------------+ | PHP Version 6 | +----------------------------------------------------------------------+ | 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. | +----------------------------------------------------------------------+ | Authors: Georg Richter <georg@php.net> | | Andrey Hristov <andrey@php.net> | | Ulf Wendel <uw@php.net> | +----------------------------------------------------------------------+ $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#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/* 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 101008enum 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#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##i64typedef __int64 my_longlong;#else#define PHP_MYSQLI_API#define MYSQLI_LLU_SPEC "%llu"#define MYSQLI_LL_SPEC "%lld"#define L64(x) x##LLtypedef long long my_longlong;#endif#ifdef ZTS#include "TSRM.h"#endif#define PHP_MYSQLI_EXPORT(__type) PHP_MYSQLI_API __typeextern 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[];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_SPLextern PHPAPI zend_class_entry *spl_ce_RuntimeException;#endifPHP_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 %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);\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -