#define mysqlnd_fetch_into(result, flags, ret_val, ext) (result)->m.fetch_into((result), (flags), (ret_val), (ext) ZEND_FILE_LINE_CC)
#define mysqlnd_fetch_row_c(result) (result)->m.fetch_row_c((result))
#define mysqlnd_fetch_all(result, flags, return_value) (result)->m.fetch_all((result), (flags), (return_value) ZEND_FILE_LINE_CC)
-#define mysqlnd_result_fetch_field_data(res,offset,ret) (res)->m.fetch_field_data((res), (offset), (ret))
#define mysqlnd_get_connection_stats(conn, values) ((conn)->data)->m->get_statistics((conn)->data, (values) ZEND_FILE_LINE_CC)
#define mysqlnd_get_client_stats(values) _mysqlnd_get_client_stats(mysqlnd_global_stats, (values) ZEND_FILE_LINE_CC)
/* }}} */
-/* {{{ mysqlnd_res::fetch_field_data */
-static void
-MYSQLND_METHOD(mysqlnd_res, fetch_field_data)(MYSQLND_RES * result, const unsigned int offset, zval *return_value)
-{
- zval row;
- zval *entry;
- unsigned int i = 0;
-
- DBG_ENTER("mysqlnd_res::fetch_field_data");
- DBG_INF_FMT("offset=%u", offset);
- /*
- Hint Zend how many elements we will have in the hash. Thus it won't
- extend and rehash the hash constantly.
- */
- mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, &row, MYSQLND_MYSQL);
- if (Z_TYPE(row) != IS_ARRAY) {
- zval_ptr_dtor_nogc(&row);
- RETVAL_NULL();
- DBG_VOID_RETURN;
- }
-
- zend_hash_internal_pointer_reset(Z_ARRVAL(row));
- while (i++ < offset) {
- zend_hash_move_forward(Z_ARRVAL(row));
- }
-
- entry = zend_hash_get_current_data(Z_ARRVAL(row));
-
- ZVAL_COPY(return_value, entry);
- zval_ptr_dtor_nogc(&row);
-
- DBG_VOID_RETURN;
-}
-/* }}} */
-
-
MYSQLND_CLASS_METHODS_START(mysqlnd_res)
MYSQLND_METHOD(mysqlnd_res, fetch_row),
MYSQLND_METHOD(mysqlnd_res, use_result),
MYSQLND_METHOD(mysqlnd_res, fetch_into),
MYSQLND_METHOD(mysqlnd_res, fetch_row_c),
MYSQLND_METHOD(mysqlnd_res, fetch_all),
- MYSQLND_METHOD(mysqlnd_res, fetch_field_data),
MYSQLND_METHOD(mysqlnd_res, num_rows),
MYSQLND_METHOD(mysqlnd_res, num_fields),
MYSQLND_METHOD(mysqlnd_res, skip_result),
typedef void (*func_mysqlnd_res__fetch_into)(MYSQLND_RES *result, const unsigned int flags, zval *return_value, enum_mysqlnd_extension ext ZEND_FILE_LINE_DC);
typedef MYSQLND_ROW_C (*func_mysqlnd_res__fetch_row_c)(MYSQLND_RES *result);
typedef void (*func_mysqlnd_res__fetch_all)(MYSQLND_RES *result, const unsigned int flags, zval *return_value ZEND_FILE_LINE_DC);
-typedef void (*func_mysqlnd_res__fetch_field_data)(MYSQLND_RES *result, const unsigned int offset, zval *return_value);
typedef uint64_t (*func_mysqlnd_res__num_rows)(const MYSQLND_RES * const result);
typedef unsigned int (*func_mysqlnd_res__num_fields)(const MYSQLND_RES * const result);
typedef enum_func_status (*func_mysqlnd_res__skip_result)(MYSQLND_RES * const result);
func_mysqlnd_res__fetch_into fetch_into;
func_mysqlnd_res__fetch_row_c fetch_row_c;
func_mysqlnd_res__fetch_all fetch_all;
- func_mysqlnd_res__fetch_field_data fetch_field_data;
func_mysqlnd_res__num_rows num_rows;
func_mysqlnd_res__num_fields num_fields;
func_mysqlnd_res__skip_result skip_result;