summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli_nonapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mysqli/mysqli_nonapi.c')
-rw-r--r--ext/mysqli/mysqli_nonapi.c59
1 files changed, 32 insertions, 27 deletions
diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c
index cbc932298b..7b6c07d2e3 100644
--- a/ext/mysqli/mysqli_nonapi.c
+++ b/ext/mysqli/mysqli_nonapi.c
@@ -16,8 +16,6 @@
| Andrey Hristov <andrey@php.net> |
| Ulf Wendel <uw@php.net> |
+----------------------------------------------------------------------+
-
- $Id$
*/
#ifdef HAVE_CONFIG_H
@@ -35,11 +33,6 @@
#define SAFE_STR(a) ((a)?a:"")
-#ifndef zend_parse_parameters_none
-#define zend_parse_parameters_none() \
- zend_parse_parameters(ZEND_NUM_ARGS(), "")
-#endif
-
/* {{{ php_mysqli_set_error
*/
static void php_mysqli_set_error(zend_long mysql_errno, char *mysql_err)
@@ -185,7 +178,7 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
MyG(num_active_persistent)++;
/* clear error */
- php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql));
+ php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql));
goto end;
} else {
@@ -196,12 +189,10 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
} while (0);
}
} else {
- zend_resource le;
- le.type = php_le_pmysqli();
- le.ptr = plist = calloc(1, sizeof(mysqli_plist_entry));
+ plist = calloc(1, sizeof(mysqli_plist_entry));
zend_ptr_stack_init_ex(&plist->free_links, 1);
- zend_hash_str_update_mem(&EG(persistent_list), ZSTR_VAL(hash_key), ZSTR_LEN(hash_key), &le, sizeof(le));
+ zend_register_persistent_resource(ZSTR_VAL(hash_key), ZSTR_LEN(hash_key), plist, php_le_pmysqli());
}
}
}
@@ -297,7 +288,7 @@ end:
err:
if (mysql->hash_key) {
- zend_string_release(mysql->hash_key);
+ zend_string_release_ex(mysql->hash_key, 0);
mysql->hash_key = NULL;
mysql->persistent = FALSE;
}
@@ -343,7 +334,7 @@ PHP_FUNCTION(mysqli_connect_error)
}
/* }}} */
-/* {{{ proto mixed mysqli_fetch_array (object result [,int resulttype])
+/* {{{ proto mixed mysqli_fetch_array(object result [,int resulttype])
Fetch a result row as an associative array, a numeric array, or both */
PHP_FUNCTION(mysqli_fetch_array)
{
@@ -351,7 +342,7 @@ PHP_FUNCTION(mysqli_fetch_array)
}
/* }}} */
-/* {{{ proto mixed mysqli_fetch_assoc (object result)
+/* {{{ proto mixed mysqli_fetch_assoc(object result)
Fetch a result row as an associative array */
PHP_FUNCTION(mysqli_fetch_assoc)
{
@@ -359,7 +350,7 @@ PHP_FUNCTION(mysqli_fetch_assoc)
}
/* }}} */
-/* {{{ proto mixed mysqli_fetch_all (object result [,int resulttype])
+/* {{{ proto mixed mysqli_fetch_all(object result [,int resulttype])
Fetches all result rows as an associative array, a numeric array, or both */
#if defined(MYSQLI_USE_MYSQLND)
PHP_FUNCTION(mysqli_fetch_all)
@@ -412,7 +403,7 @@ PHP_FUNCTION(mysqli_get_connection_stats)
#endif
/* }}} */
-/* {{{ proto mixed mysqli_error_list (object connection)
+/* {{{ proto mixed mysqli_error_list(object connection)
Fetches all client errors */
PHP_FUNCTION(mysqli_error_list)
{
@@ -423,14 +414,14 @@ PHP_FUNCTION(mysqli_error_list)
return;
}
MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
- array_init(return_value);
#if defined(MYSQLI_USE_MYSQLND)
- if (mysql->mysql->data->error_info->error_list) {
+ if (1) {
MYSQLND_ERROR_LIST_ELEMENT * message;
zend_llist_position pos;
- for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(mysql->mysql->data->error_info->error_list, &pos);
+ array_init(return_value);
+ for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(&mysql->mysql->data->error_info->error_list, &pos);
message;
- message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(mysql->mysql->data->error_info->error_list, &pos))
+ message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(&mysql->mysql->data->error_info->error_list, &pos))
{
zval single_error;
array_init(&single_error);
@@ -439,15 +430,20 @@ PHP_FUNCTION(mysqli_error_list)
add_assoc_string_ex(&single_error, "error", sizeof("error") - 1, message->error);
add_next_index_zval(return_value, &single_error);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
#else
if (mysql_errno(mysql->mysql)) {
zval single_error;
+ array_init(return_value);
array_init(&single_error);
add_assoc_long_ex(&single_error, "errno", sizeof("errno") - 1, mysql_errno(mysql->mysql));
add_assoc_string_ex(&single_error, "sqlstate", sizeof("sqlstate") - 1, mysql_sqlstate(mysql->mysql));
add_assoc_string_ex(&single_error, "error", sizeof("error") - 1, mysql_error(mysql->mysql));
add_next_index_zval(return_value, &single_error);
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
#endif
}
@@ -464,14 +460,14 @@ PHP_FUNCTION(mysqli_stmt_error_list)
return;
}
MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_INITIALIZED);
- array_init(return_value);
#if defined(MYSQLI_USE_MYSQLND)
- if (stmt->stmt && stmt->stmt->data && stmt->stmt->data->error_info->error_list) {
+ if (stmt->stmt && stmt->stmt->data && stmt->stmt->data->error_info) {
MYSQLND_ERROR_LIST_ELEMENT * message;
zend_llist_position pos;
- for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(stmt->stmt->data->error_info->error_list, &pos);
+ array_init(return_value);
+ for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(&stmt->stmt->data->error_info->error_list, &pos);
message;
- message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(stmt->stmt->data->error_info->error_list, &pos))
+ message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(&stmt->stmt->data->error_info->error_list, &pos))
{
zval single_error;
array_init(&single_error);
@@ -480,21 +476,26 @@ PHP_FUNCTION(mysqli_stmt_error_list)
add_assoc_string_ex(&single_error, "error", sizeof("error") - 1, message->error);
add_next_index_zval(return_value, &single_error);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
#else
if (mysql_stmt_errno(stmt->stmt)) {
zval single_error;
+ array_init(return_value);
array_init(&single_error);
add_assoc_long_ex(&single_error, "errno", sizeof("errno") - 1, mysql_stmt_errno(stmt->stmt));
add_assoc_string_ex(&single_error, "sqlstate", sizeof("sqlstate") - 1, mysql_stmt_sqlstate(stmt->stmt));
add_assoc_string_ex(&single_error, "error", sizeof("error") - 1, mysql_stmt_error(stmt->stmt));
add_next_index_zval(return_value, &single_error);
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
#endif
}
/* }}} */
-/* {{{ proto mixed mysqli_fetch_object (object result [, string class_name [, NULL|array ctor_params]])
+/* {{{ proto mixed mysqli_fetch_object(object result [, string class_name [, NULL|array ctor_params]])
Fetch a result row as an object */
PHP_FUNCTION(mysqli_fetch_object)
{
@@ -528,6 +529,9 @@ PHP_FUNCTION(mysqli_multi_query)
s_errno = mysql_errno(mysql->mysql);
#else
MYSQLND_ERROR_INFO error_info = *mysql->mysql->data->error_info;
+ mysql->mysql->data->error_info->error_list.head = NULL;
+ mysql->mysql->data->error_info->error_list.tail = NULL;
+ mysql->mysql->data->error_info->error_list.count = 0;
#endif
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
MYSQLI_DISABLE_MQ;
@@ -538,6 +542,7 @@ PHP_FUNCTION(mysqli_multi_query)
strcpy(mysql->mysql->net.sqlstate, s_sqlstate);
mysql->mysql->net.last_errno = s_errno;
#else
+ zend_llist_clean(&mysql->mysql->data->error_info->error_list);
*mysql->mysql->data->error_info = error_info;
#endif
RETURN_FALSE;
@@ -750,7 +755,7 @@ static int mysqlnd_dont_poll_zval_array_from_mysqlnd_array(MYSQLND **in_array, z
}
/* }}} */
-/* {{{ proto int mysqli_poll(array read, array write, array error, long sec [, long usec]) U
+/* {{{ proto int mysqli_poll(array read, array write, array error, int sec [, int usec]) U
Poll connections */
PHP_FUNCTION(mysqli_poll)
{