📄 mysqli_api.c
字号:
#endif RETURN_TRUE; break; case 1: RETURN_FALSE; break; default: RETURN_NULL(); break; }}/* }}} */#else/* {{{ mixed mysqli_stmt_fetch_mysqlnd */void mysqli_stmt_fetch_mysqlnd(INTERNAL_FUNCTION_PARAMETERS){ MY_STMT *stmt; zval *mysql_stmt; zend_bool fetched_anything; enum_func_status ret; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID); if (FAIL == (ret = mysqlnd_stmt_fetch(stmt->stmt, &fetched_anything TSRMLS_CC))) { RETURN_BOOL(FALSE); } else if (fetched_anything == TRUE) { RETURN_BOOL(TRUE); } else { RETURN_NULL(); }}#endif/* }}} *//* {{{ proto mixed mysqli_stmt_fetch(object stmt) U Fetch results from a prepared statement into the bound variables */PHP_FUNCTION(mysqli_stmt_fetch){#if !defined(HAVE_MYSQLND) mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAM_PASSTHRU);#else mysqli_stmt_fetch_mysqlnd(INTERNAL_FUNCTION_PARAM_PASSTHRU);#endif}/* }}} */static void php_add_field_properties(zval *value, MYSQL_FIELD *field TSRMLS_DC){ add_property_utf8_string(value, "name",(field->name ? field->name : ""), ZSTR_DUPLICATE); add_property_utf8_string(value, "orgname",(field->org_name ? field->org_name : ""), ZSTR_DUPLICATE); add_property_utf8_string(value, "table",(field->table ? field->table : ""), ZSTR_DUPLICATE); add_property_utf8_string(value, "orgtable",(field->org_table ? field->org_table : ""), ZSTR_DUPLICATE); add_property_utf8_string(value, "def",(field->def ? field->def : ""), ZSTR_DUPLICATE); add_property_long(value, "max_length", field->max_length); add_property_long(value, "length", field->length); add_property_long(value, "charsetnr", field->charsetnr); add_property_long(value, "flags", field->flags); add_property_long(value, "type", field->type); add_property_long(value, "decimals", field->decimals);}/* {{{ proto mixed mysqli_fetch_field (object result) U Get column information from a result and return as an object */PHP_FUNCTION(mysqli_fetch_field) { MYSQL_RES *result; zval *mysql_result; MYSQL_FIELD *field; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (!(field = mysql_fetch_field(result))) { RETURN_FALSE; } object_init(return_value); php_add_field_properties(return_value, field TSRMLS_CC);}/* }}} *//* {{{ proto mixed mysqli_fetch_fields (object result) U Return array of objects containing field meta-data */PHP_FUNCTION(mysqli_fetch_fields) { MYSQL_RES *result; zval *mysql_result; MYSQL_FIELD *field; zval *obj; unsigned int i; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); array_init(return_value); for (i = 0; i < mysql_num_fields(result); i++) { field = mysql_fetch_field_direct(result, i); MAKE_STD_ZVAL(obj); object_init(obj); php_add_field_properties(obj, field TSRMLS_CC); add_index_zval(return_value, i, obj); }}/* }}} *//* {{{ proto mixed mysqli_fetch_field_direct (object result, int offset) U Fetch meta-data for a single field */PHP_FUNCTION(mysqli_fetch_field_direct) { MYSQL_RES *result; zval *mysql_result; MYSQL_FIELD *field; long offset; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &offset) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (offset < 0 || offset >= mysql_num_fields(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Field offset is invalid for resultset"); RETURN_FALSE; } if (!(field = mysql_fetch_field_direct(result,offset))) { RETURN_FALSE; } object_init(return_value); php_add_field_properties(return_value, field TSRMLS_CC);}/* }}} *//* {{{ proto mixed mysqli_fetch_lengths (object result) U Get the length of each output in a result */PHP_FUNCTION(mysqli_fetch_lengths) { MYSQL_RES *result; zval *mysql_result; unsigned int i; unsigned long *ret; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (!(ret = mysql_fetch_lengths(result))) { RETURN_FALSE; } array_init(return_value); for (i = 0; i < mysql_num_fields(result); i++) { add_index_long(return_value, i, ret[i]); }}/* }}} *//* {{{ proto array mysqli_fetch_row (object result) U Get a result row as an enumerated array */PHP_FUNCTION(mysqli_fetch_row) {#if !defined(HAVE_MYSQLND) php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQLI_NUM, 0);#else MYSQL_RES *result; zval *mysql_result; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, return_value); #endif}/* }}} *//* {{{ proto int mysqli_field_count(object link) U Fetch the number of fields returned by the last query for the given link*/PHP_FUNCTION(mysqli_field_count) { MY_MYSQL *mysql; zval *mysql_link; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); RETURN_LONG(mysql_field_count(mysql->mysql));}/* }}} *//* {{{ proto int mysqli_field_seek(object result, int fieldnr) U Set result pointer to a specified field offset*/PHP_FUNCTION(mysqli_field_seek){ MYSQL_RES *result; zval *mysql_result; unsigned long fieldnr; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &fieldnr) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (fieldnr < 0 || fieldnr >= mysql_num_fields(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid field offset"); RETURN_FALSE; } mysql_field_seek(result, fieldnr); RETURN_TRUE;}/* }}} *//* {{{ proto int mysqli_field_tell(object result) U Get current field offset of result pointer */PHP_FUNCTION(mysqli_field_tell){ MYSQL_RES *result; zval *mysql_result; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); RETURN_LONG(mysql_field_tell(result));}/* }}} *//* {{{ proto void mysqli_free_result(object result) U Free query result memory for the given result handle */PHP_FUNCTION(mysqli_free_result) { MYSQL_RES *result; zval *mysql_result; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); mysqli_free_result(result, FALSE); MYSQLI_CLEAR_RESOURCE(&mysql_result); }/* }}} *//* {{{ proto string mysqli_get_client_info(void) U Get MySQL client info */PHP_FUNCTION(mysqli_get_client_info){ char *info = (char *)mysql_get_client_info(); RETURN_UTF8_STRING(info, ZSTR_DUPLICATE);}/* }}} *//* {{{ proto int mysqli_get_client_version(void) U Get MySQL client info */PHP_FUNCTION(mysqli_get_client_version){ RETURN_LONG((long)mysql_get_client_version());}/* }}} *//* {{{ proto string mysqli_get_host_info (object link) U Get MySQL host info */PHP_FUNCTION(mysqli_get_host_info) { MY_MYSQL *mysql; zval *mysql_link = NULL; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); RETURN_UTF8_STRING(mysql->mysql->host_info, ZSTR_DUPLICATE);}/* }}} *//* {{{ proto int mysqli_get_proto_info(object link) U Get MySQL protocol information */PHP_FUNCTION(mysqli_get_proto_info){ MY_MYSQL *mysql; zval *mysql_link = NULL; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); RETURN_LONG(mysql_get_proto_info(mysql->mysql));}/* }}} *//* {{{ proto string mysqli_get_server_info(object link) U Get MySQL server info */PHP_FUNCTION(mysqli_get_server_info){ MY_MYSQL *mysql; zval *mysql_link = NULL; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); RETURN_UTF8_STRING((char *)mysql_get_server_info(mysql->mysql), ZSTR_DUPLICATE);}/* }}} *//* {{{ proto int mysqli_get_server_version(object link) U Return the MySQL version for the server referenced by the given link */PHP_FUNCTION(mysqli_get_server_version){ MY_MYSQL *mysql; zval *mysql_link = NULL; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); RETURN_LONG(mysql_get_server_version(mysql->mysql));}/* }}} *//* {{{ proto string mysqli_info(object link) U Get information about the most recent query */PHP_FUNCTION(mysqli_info){ MY_MYSQL *mysql; zval *mysql_link = NULL; const char *info; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); info = mysql_info(mysql->mysql); RETURN_UTF8_STRING((info) ? info : "", ZSTR_DUPLICATE);}/* }}} *//* {{{ proto resource mysqli_init(void) U Initialize mysqli and return a resource for use with mysql_real_connect */PHP_FUNCTION(mysqli_init){ MYSQLI_RESOURCE *mysqli_resource; MY_MYSQL *mysql = (MY_MYSQL *)ecalloc(1, sizeof(MY_MYSQL));#if !defined(HAVE_MYSQLND) if (!(mysql->mysql = mysql_init(NULL)))#else if (!(mysql->mysql = mysql_init(FALSE)))#endif { efree(mysql); RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = (void *)mysql; mysqli_resource->status = MYSQLI_STATUS_INITIALIZED; if (!getThis() || !instanceof_function(Z_OBJCE_P(getThis()), mysqli_link_class_entry TSRMLS_CC)) { MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_link_class_entry); } else { ((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->ptr = mysqli_resource; }}/* }}} *//* {{{ proto mixed mysqli_insert_id(object link) U Get the ID generated from the previous INSERT operation */PHP_FUNCTION(mysqli_insert_id){ MY_MYSQL *mysql; my_ulonglong rc; zval *mysql_link; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); rc = mysql_insert_id(mysql->mysql); MYSQLI_RETURN_LONG_LONG(rc)}/* }}} *//* {{{ proto bool mysqli_kill(object link, int processid) U Kill a mysql process on the server */PHP_FUNCTION(mysqli_kill){ MY_MYSQL *mysql; zval *mysql_link; long processid; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &processid) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); if (processid <= 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "processid should have positive value"); RETURN_FALSE; } if (mysql_kill(mysql->mysql, processid)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } RETURN_TRUE;}/* }}} *//* {{{ proto void mysqli_set_local_infile_default(object link) U unsets user defined handler for load local infile command */PHP_FUNCTION(mysqli_set_local_infile_default)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -