📄 mysqli_api.c
字号:
} 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}/* }}} *//* {{{ proto mixed mysqli_fetch_field (object result) 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); add_property_string(return_value, "name",(field->name ? field->name : ""), 1); add_property_string(return_value, "orgname",(field->org_name ? field->org_name : ""), 1); add_property_string(return_value, "table",(field->table ? field->table : ""), 1); add_property_string(return_value, "orgtable",(field->org_table ? field->org_table : ""), 1); add_property_string(return_value, "def",(field->def ? field->def : ""), 1); add_property_long(return_value, "max_length", field->max_length); add_property_long(return_value, "length", field->length); add_property_long(return_value, "charsetnr", field->charsetnr); add_property_long(return_value, "flags", field->flags); add_property_long(return_value, "type", field->type); add_property_long(return_value, "decimals", field->decimals);}/* }}} *//* {{{ proto mixed mysqli_fetch_fields (object result) 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); add_property_string(obj, "name",(field->name ? field->name : ""), 1); add_property_string(obj, "orgname",(field->org_name ? field->org_name : ""), 1); add_property_string(obj, "table",(field->table ? field->table : ""), 1); add_property_string(obj, "orgtable",(field->org_table ? field->org_table : ""), 1); add_property_string(obj, "def",(field->def ? field->def : ""), 1); add_property_long(obj, "max_length", field->max_length); add_property_long(obj, "length", field->length); add_property_long(obj, "charsetnr", field->charsetnr); add_property_long(obj, "flags", field->flags); add_property_long(obj, "type", field->type); add_property_long(obj, "decimals", field->decimals); add_index_zval(return_value, i, obj); }}/* }}} *//* {{{ proto mixed mysqli_fetch_field_direct (object result, int offset) 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); add_property_string(return_value, "name",(field->name ? field->name : ""), 1); add_property_string(return_value, "orgname",(field->org_name ? field->org_name : ""), 1); add_property_string(return_value, "table",(field->table ? field->table : ""), 1); add_property_string(return_value, "orgtable",(field->org_table ? field->org_table : ""), 1); add_property_string(return_value, "def",(field->def ? field->def : ""), 1); add_property_long(return_value, "max_length", field->max_length); add_property_long(return_value, "length", field->length); add_property_long(return_value, "charsetnr", field->charsetnr); add_property_long(return_value, "flags", field->flags); add_property_long(return_value, "type", field->type); add_property_long(return_value, "decimals", field->decimals);}/* }}} *//* {{{ proto mixed mysqli_fetch_lengths (object result) 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) 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) 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) 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) 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) 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); mysql_free_result(result); MYSQLI_CLEAR_RESOURCE(&mysql_result); }/* }}} *//* {{{ proto string mysqli_get_client_info(void) Get MySQL client info */PHP_FUNCTION(mysqli_get_client_info){ RETURN_STRING((char *)mysql_get_client_info(), 1);}/* }}} *//* {{{ proto int mysqli_get_client_version(void) 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) 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_STRING((mysql->mysql->host_info) ? mysql->mysql->host_info : "", 1);}/* }}} *//* {{{ proto int mysqli_get_proto_info(object link) 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) 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_STRING((char *)mysql_get_server_info(mysql->mysql), 1);}/* }}} *//* {{{ proto int mysqli_get_server_version(object link) 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) 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_STRING((info) ? (char *)info : "", 1);}/* }}} *//* {{{ proto resource mysqli_init(void) 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) 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) 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 (processid < 1) { 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) 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 + -