31#define ERROR_ARG_POS(arg_num) (hasThis() ? (arg_num-1) : (arg_num))
88 for (uint32_t i = 0; i < num_vars; i++) {
95#if SIZEOF_ZEND_LONG==8
97#elif SIZEOF_ZEND_LONG==4
144 if (types_len != (
size_t) argc) {
146 zend_argument_count_error(
"The number of elements in the type definition string must match the number of bind variables");
165 for (uint32_t i = 0; i < argc; i++) {
203 char *user, *password, *dbname;
204 size_t user_len, password_len, dbname_len;
206 if (
zend_parse_method_parameters(
ZEND_NUM_ARGS(),
getThis(),
"Osss!", &mysql_link,
mysqli_link_class_entry, &user, &user_len, &password, &password_len, &dbname, &dbname_len) ==
FAILURE) {
244 if ((le = zend_hash_find_ptr(&
EG(persistent_list), mysql->
hash_key)) !=
NULL) {
421 unsigned int hash_num_elements;
422 unsigned int param_count;
425 if (!zend_array_is_list(input_params)) {
430 hash_num_elements = zend_hash_num_elements(input_params);
432 if (hash_num_elements != param_count) {
470 stmt->
stmt->data->error_info->error_list.head =
NULL;
471 stmt->
stmt->data->error_info->error_list.tail =
NULL;
472 stmt->
stmt->data->error_info->error_list.count = 0;
475 uint64_t affected_rows = mysql->
mysql->data->upsert_status->affected_rows;
483 *mysql->
mysql->data->error_info = error_info;
484 mysql->
mysql->data->upsert_status->affected_rows = affected_rows;
530 unsigned int hash_num_elements;
531 unsigned int param_count;
534 if (!zend_array_is_list(input_params)) {
542 hash_num_elements = zend_hash_num_elements(input_params);
544 if (hash_num_elements != param_count) {
611 bool fetched_anything;
621 }
else if (fetched_anything) {
639 add_property_str(
value,
"name", zend_string_copy(field->sname));
641 add_property_stringl(
value,
"orgname", (field->org_name ? field->org_name :
""), field->org_name_length);
642 add_property_stringl(
value,
"table", (field->table ? field->table :
""), field->table_length);
643 add_property_stringl(
value,
"orgtable", (field->org_table ? field->org_table :
""), field->org_table_length);
644 add_property_stringl(
value,
"def", (field->def ? field->def :
""), field->def_length);
645 add_property_stringl(
value,
"db", (field->db ? field->db :
""), field->db_length);
651 add_property_string(
value,
"catalog",
"def");
653 add_property_long(
value,
"max_length", 0);
654 add_property_long(
value,
"length", field->length);
655 add_property_long(
value,
"charsetnr", field->charsetnr);
656 add_property_long(
value,
"flags", field->flags);
657 add_property_long(
value,
"type", field->type);
658 add_property_long(
value,
"decimals", field->decimals);
691 unsigned int i, num_fields;
702 for (i = 0; i < num_fields; i++) {
707 php_add_field_properties(&obj, field);
751 unsigned int i, num_fields;
768 for (i = 0; i < num_fields; i++) {
993 mysqli_resource->
ptr = (
void *)mysql;
1038 if (processid <= 0) {
1156static int mysqli_options_get_option_zval_type(
int option)
1194 unsigned int l_value;
1203 expected_type = mysqli_options_get_option_zval_type(mysql_option);
1204 if (expected_type !=
Z_TYPE_P(mysql_value)) {
1205 switch (expected_type) {
1207 if (!try_convert_to_string(mysql_value)) {
1218 switch (expected_type) {
1278 mysql->
mysql->data->error_info->error_list.head =
NULL;
1279 mysql->
mysql->data->error_info->error_list.tail =
NULL;
1280 mysql->
mysql->data->error_info->error_list.count = 0;
1286 *mysql->
mysql->data->error_info = error_info;
1304 mysqli_resource->
ptr = (
void *)stmt;
1349# define mysql_real_escape_string_quote(mysql, to, from, length, quote) \
1350 mysql_real_escape_string(mysql, to, from, length)
1356 size_t escapestr_len;
1364 newstr = zend_string_safe_alloc(2, escapestr_len, 0, 0);
1366 newstr = zend_string_truncate(newstr,
ZSTR_LEN(newstr), 0);
1378 size_t name_len = 0;
1622 size_t ssl_parm_len[5], i;
1624 if (
zend_parse_method_parameters(
ZEND_NUM_ARGS(),
getThis(),
"Os!s!s!s!s!", &mysql_link,
mysqli_link_class_entry, &ssl_parm[0], &ssl_parm_len[0], &ssl_parm[1], &ssl_parm_len[1], &ssl_parm[2], &ssl_parm_len[2], &ssl_parm[3], &ssl_parm_len[3], &ssl_parm[4], &ssl_parm_len[4]) ==
FAILURE) {
1629 for (i = 0; i < 5; i++) {
1630 if (!ssl_parm_len[i]) {
1635 mysql_ssl_set(mysql->
mysql, ssl_parm[0], ssl_parm[1], ssl_parm[2], ssl_parm[3], ssl_parm[4]);
1697 if (mode_in != 0 && mode_in != 1) {
1711 "for attribute MYSQLI_STMT_ATTR_CURSOR_TYPE");
1719 "MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH or MYSQLI_STMT_ATTR_CURSOR_TYPE");
1736 unsigned long value = 0;
1750 "MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH or MYSQLI_STMT_ATTR_CURSOR_TYPE");
1813 mysqli_resource->
ptr = (
void *)stmt;
1915 zend_error(
E_DEPRECATED,
"Passing the $mode parameter is deprecated since 8.4, as it has been ignored since 8.1");
PHPAPI ZEND_COLD void php_error_docref(const char *docref, int type, const char *format,...)
zend_class_entry * mysqli_result_class_entry
void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags, int into_object)
void php_clear_stmt_bind(MY_STMT *stmt)
zend_class_entry * mysqli_stmt_class_entry
void php_clear_mysql(MY_MYSQL *mysql)
zend_class_entry * mysqli_link_class_entry
mysqli_stmt_free_result(mysqli_stmt $statement)
mysqli_num_fields(mysqli_result $result)
mysqli_get_client_info(?mysqli $mysql=null)
mysqli_stmt_insert_id(mysqli_stmt $statement)
mysqli_execute_query(mysqli $mysql, string $query, ?array $params=null)
mysqli_prepare(mysqli $mysql, string $query)
mysqli_change_user(mysqli $mysql, string $username, #[\SensitiveParameter] string $password, ?string $database)
mysqli_get_server_version(mysqli $mysql)
mysqli_num_rows(mysqli_result $result)
mysqli_error(mysqli $mysql)
mysqli_refresh(mysqli $mysql, int $flags)
mysqli_commit(mysqli $mysql, int $flags=0, ?string $name=null)
mysqli_stmt_affected_rows(mysqli_stmt $statement)
mysqli_get_server_info(mysqli $mysql)
mysqli_ssl_set(mysqli $mysql, ?string $key, ?string $certificate, ?string $ca_certificate, ?string $ca_path, ?string $cipher_algos)
mysqli_stmt_send_long_data(mysqli_stmt $statement, int $param_num, string $data)
mysqli_fetch_lengths(mysqli_result $result)
mysqli_stmt_sqlstate(mysqli_stmt $statement)
mysqli_stmt_data_seek(mysqli_stmt $statement, int $offset)
mysqli_stmt_reset(mysqli_stmt $statement)
mysqli_field_count(mysqli $mysql)
mysqli_field_seek(mysqli_result $result, int $index)
mysqli_get_client_version()
mysqli_next_result(mysqli $mysql)
mysqli_fetch_fields(mysqli_result $result)
mysqli_stmt_attr_get(mysqli_stmt $statement, int $attribute)
mysqli_affected_rows(mysqli $mysql)
mysqli_more_results(mysqli $mysql)
mysqli_ping(mysqli $mysql)
mysqli_stat(mysqli $mysql)
mysqli_stmt_param_count(mysqli_stmt $statement)
mysqli_stmt_next_result(mysqli_stmt $statement)
mysqli_errno(mysqli $mysql)
mysqli_store_result(mysqli $mysql, int $mode=0)
mysqli_stmt_store_result(mysqli_stmt $statement)
mysqli_fetch_field_direct(mysqli_result $result, int $index)
mysqli_stmt_bind_param(mysqli_stmt $statement, string $types, mixed &... $vars)
mysqli_autocommit(mysqli $mysql, bool $enable)
mysqli_rollback(mysqli $mysql, int $flags=0, ?string $name=null)
mysqli_kill(mysqli $mysql, int $process_id)
mysqli_fetch_field(mysqli_result $result)
mysqli_stmt_prepare(mysqli_stmt $statement, string $query)
mysqli_thread_id(mysqli $mysql)
mysqli_stmt_bind_result(mysqli_stmt $statement, mixed &... $vars)
mysqli_dump_debug_info(mysqli $mysql)
mysqli_debug(string $options)
mysqli_data_seek(mysqli_result $result, int $offset)
mysqli_options(mysqli $mysql, int $option, $value)
mysqli_field_tell(mysqli_result $result)
mysqli_stmt_execute(mysqli_stmt $statement, ?array $params=null)
mysqli_stmt_field_count(mysqli_stmt $statement)
mysqli_use_result(mysqli $mysql)
mysqli_stmt_error(mysqli_stmt $statement)
mysqli_insert_id(mysqli $mysql)
mysqli_stmt_init(mysqli $mysql)
mysqli_fetch_row(mysqli_result $result)
mysqli_get_proto_info(mysqli $mysql)
mysqli_real_connect(mysqli $mysql, ?string $hostname=null, ?string $username=null, #[\SensitiveParameter] ?string $password=null, ?string $database=null, ?int $port=null, ?string $socket=null, int $flags=0)
mysqli_real_query(mysqli $mysql, string $query)
mysqli_warning_count(mysqli $mysql)
mysqli_real_escape_string(mysqli $mysql, string $string)
mysqli_character_set_name(mysqli $mysql)
mysqli_get_host_info(mysqli $mysql)
mysqli_stmt_result_metadata(mysqli_stmt $statement)
mysqli_stmt_more_results(mysqli_stmt $statement)
mysqli_stmt_num_rows(mysqli_stmt $statement)
mysqli_sqlstate(mysqli $mysql)
mysqli_select_db(mysqli $mysql, string $database)
mysqli_info(mysqli $mysql)
mysqli_stmt_attr_set(mysqli_stmt $statement, int $attribute, int $value)
mysqli_stmt_errno(mysqli_stmt $statement)
mysqli_stmt_fetch(mysqli_stmt $statement)
#define mysql_real_escape_string_quote(mysql, to, from, length, quote)
void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS, bool is_method)
#define ERROR_ARG_POS(arg_num)
void mysqli_stmt_fetch_mysqlnd(INTERNAL_FUNCTION_PARAMETERS)
void close_stmt_and_copy_errors(MY_STMT *stmt, MY_MYSQL *mysql)
void php_mysqli_close(MY_MYSQL *mysql, int close_type, int resource_status)
#define mysqli_stmt_close(c, implicit)
#define MYSQLI_CLOSE_EXPLICIT
#define mysqli_result_is_unbuffered(r)
#define mysqli_server_status(c)
#define mysqli_free_result(r, implicit)
#define mysqli_close(c, how)
#define mysqli_result_is_unbuffered_and_not_everything_is_fetched(r)
#define mysqli_stmt_server_status(s)
void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, bool is_real_connect, bool in_ctor)
#define MYSQLI_REPORT_MYSQL_ERROR(mysql)
#define MYSQLI_RETURN_LONG_INT(__val)
#define MYSQLI_REPORT_STMT_ERROR(stmt)
#define MYSQLI_DISABLE_MQ
#define MYSQLI_REPORT_INDEX
void php_mysqli_report_index(const char *query, unsigned int status)
#define mysqlnd_init(flags, persistent)
#define mysqlnd_end_psession(conn)
#define mysqlnd_stmt_more_results(stmt)
#define mysqlnd_stmt_free_param_bind(stmt, bind)
#define mysqlnd_stmt_bind_param(stmt, bind)
#define mysqlnd_stat(conn, msg)
#define mysqlnd_stmt_fetch(stmt, fetched)
#define mysqlnd_change_user_ex(conn, user, passwd, db, silent, passwd_len)
#define mysqlnd_rollback(conn, flags, name)
#define mysqlnd_stmt_alloc_result_bind(stmt)
#define mysqlnd_stmt_alloc_param_bind(stmt)
#define mysqlnd_stmt_bind_result(stmt, bind)
#define mysqlnd_stmt_get_result(stmt)
#define mysqlnd_commit(conn, flags, name)
@ MYSQL_OPT_CONNECT_TIMEOUT
@ MYSQL_OPT_LOAD_DATA_LOCAL_DIR
@ MYSQLND_OPT_NET_CMD_BUFFER_SIZE
@ MYSQLND_OPT_INT_AND_FLOAT_NATIVE
@ MYSQL_SERVER_PUBLIC_KEY
@ MYSQL_OPT_WRITE_TIMEOUT
@ MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
@ MYSQL_READ_DEFAULT_GROUP
@ MYSQL_OPT_SSL_VERIFY_SERVER_CERT
@ MYSQL_READ_DEFAULT_FILE
@ MYSQLND_OPT_NET_READ_BUFFER_SIZE
@ STMT_ATTR_UPDATE_MAX_LENGTH
#define MYSQLND_CLIENT_NO_FLAG
enum func_status enum_func_status
#define mysql_stmt_store_result(s)
#define mysql_stmt_execute(s)
#define mysql_stmt_attr_set(s, a, v)
#define mysql_stmt_data_seek(s, r)
#define mysql_stmt_param_count(s)
#define mysql_get_proto_info(r)
#define mysql_stmt_attr_get(s, a, v)
#define mysql_autocommit(r, m)
#define mysql_use_result(r)
#define mysql_insert_id(r)
#define mysql_stmt_error(s)
#define mysql_field_tell(r)
#define mysql_thread_id(r)
#define mysql_stmt_send_long_data(s, p, d, l)
#define mysql_warning_count(r)
#define mysql_get_client_version()
#define mysql_thread_safe()
#define mysql_sqlstate(r)
#define mysql_field_seek(r, o)
#define mysql_num_rows(r)
#define mysql_refresh(conn, options)
#define mysql_field_count(r)
#define mysql_stmt_errno(s)
#define mysql_store_result(r)
#define mysql_more_results(r)
#define mysql_affected_rows(r)
#define mysql_ssl_set(c, key, cert, ca, capath, cipher)
#define mysql_fetch_field_direct(r, o)
#define mysql_character_set_name(c)
#define mysql_fetch_lengths(r)
#define mysql_stmt_free_result(s)
#define mysql_fetch_field(r)
#define mysql_real_query(r, a, b)
#define mysql_options(c, a, v)
#define mysql_stmt_field_count(s)
#define mysql_stmt_sqlstate(s)
#define mysql_data_seek(r, o)
#define mysql_select_db(r, a)
#define mysql_stmt_insert_id(s)
#define mysql_stmt_affected_rows(s)
#define mysql_stmt_prepare(s, q, l)
#define mysql_dump_debug_info(r)
#define mysql_get_client_info()
#define mysql_stmt_init(r)
#define mysql_stmt_reset(s)
#define mysql_stmt_num_rows(s)
#define mysql_next_result(r)
#define mysql_get_server_info(r)
#define mysql_num_fields(r)
#define mysql_stmt_result_metadata(s)
#define mysql_stmt_next_result(s)
#define mysql_get_server_version(r)
struct st_mysqlnd_param_bind MYSQLND_PARAM_BIND
struct st_mysqlnd_result_bind MYSQLND_RESULT_BIND
struct st_mysqlnd_error_info MYSQLND_ERROR_INFO
unsigned const char * end
PHP_JSON_API size_t int options
#define MYSQLI_RETVAL_RESOURCE(__ptr, __ce)
#define MYSQLI_CLEAR_RESOURCE(__id)
zend_long num_active_persistent
#define MYSQLI_FETCH_RESOURCE_CONN(__ptr, __id, __check)
#define MYSQLI_FETCH_RESOURCE(__ptr, __type, __id, __name, __check)
zend_long num_inactive_persistent
#define MYSQLI_SET_STATUS(__id, __value)
#define MYSQLI_FETCH_RESOURCE_STMT(__ptr, __id, __check)
bool rollback_on_cached_plink
@ MYSQLI_STATUS_INITIALIZED
enum mysqli_status status
zend_ptr_stack free_links
ZEND_API ZEND_COLD void zend_argument_count_error(const char *format,...)
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format,...)
ZEND_API ZEND_COLD void zend_error(int type, const char *format,...)
#define INTERNAL_FUNCTION_PARAMETERS
#define INTERNAL_FUNCTION_PARAM_PASSTHRU
ZEND_API zend_result zend_parse_parameters(uint32_t num_args, const char *type_spec,...)
ZEND_API ZEND_COLD void zend_argument_must_not_be_empty_error(uint32_t arg_num)
ZEND_API zend_result zend_parse_method_parameters(uint32_t num_args, zval *this_ptr, const char *type_spec,...)
ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *format,...)
ZEND_API void object_init(zval *arg)
ZEND_API void add_index_long(zval *arg, zend_ulong index, zend_long n)
#define zend_parse_parameters_none()
#define RETURN_NEW_STR(s)
#define ecalloc(nmemb, size)
#define ZEND_HASH_FOREACH_END()
#define ZEND_HASH_FOREACH_VAL(ht, _val)
ZEND_API void zend_llist_clean(zend_llist *l)
struct _zend_string zend_string
ZEND_API void ZEND_FASTCALL convert_to_long(zval *op)
#define UNEXPECTED(condition)
#define Z_STRVAL_P(zval_p)
struct _zend_resource zend_resource
struct _zend_array HashTable
#define ZVAL_COPY_VALUE(z, v)