📄 mysqli_nonapi.c
字号:
zval *mysql_result; long mode = MYSQLND_FETCH_BOTH; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l", &mysql_result, mysqli_result_class_entry, &mode) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (mode < MYSQLI_ASSOC || mode > MYSQLI_BOTH) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "The result type should be either MYSQLI_NUM, MYSQLI_ASSOC or MYSQLI_BOTH"); RETURN_FALSE; } mysqlnd_fetch_into(result, mode, return_value);#endif}/* }}} *//* {{{ proto mixed mysqli_fetch_assoc (object result) Fetch a result row as an associative array */PHP_FUNCTION(mysqli_fetch_assoc) {#if !defined(HAVE_MYSQLND) php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQLI_ASSOC, 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_ASSOC, return_value); #endif}/* }}} *//* {{{ 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) { php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQLI_ASSOC, 1); }/* }}} *//* {{{ proto bool mysqli_multi_query(object link, string query) Binary-safe version of mysql_query() */PHP_FUNCTION(mysqli_multi_query){ MY_MYSQL *mysql; zval *mysql_link; char *query = NULL; unsigned int query_len; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); MYSQLI_ENABLE_MQ; if (mysql_real_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } RETURN_TRUE;}/* }}} *//* {{{ proto mixed mysqli_query(object link, string query [,int resultmode]) */PHP_FUNCTION(mysqli_query){ MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQL_RES *result; char *query = NULL; unsigned int query_len; unsigned long resultmode = MYSQLI_STORE_RESULT; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &mysql_link, mysqli_link_class_entry, &query, &query_len, &resultmode) == FAILURE) { return; } if (!query_len) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty query"); RETURN_FALSE; } if (resultmode != MYSQLI_USE_RESULT && resultmode != MYSQLI_STORE_RESULT) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid value for resultmode"); RETURN_FALSE; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); MYSQLI_DISABLE_MQ; if (mysql_real_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } if (!mysql_field_count(mysql->mysql)) { /* no result set - not a SELECT */ if (MyG(report_mode) & MYSQLI_REPORT_INDEX) { php_mysqli_report_index(query, mysqli_server_status(mysql->mysql) TSRMLS_CC); } RETURN_TRUE; } result = (resultmode == MYSQLI_USE_RESULT) ? mysql_use_result(mysql->mysql) : mysql_store_result(mysql->mysql); if (!result) { php_mysqli_throw_sql_exception((char *)mysql_sqlstate(mysql->mysql), mysql_errno(mysql->mysql) TSRMLS_CC, "%s", mysql_error(mysql->mysql)); RETURN_FALSE; } if (MyG(report_mode) & MYSQLI_REPORT_INDEX) { php_mysqli_report_index(query, mysqli_server_status(mysql->mysql) TSRMLS_CC); } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = (void *)result; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_result_class_entry);}/* }}} *//* {{{ proto object mysqli_get_warnings(object link) */PHP_FUNCTION(mysqli_get_warnings){ MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; 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); if (mysql_warning_count(mysql->mysql)) { w = php_get_warnings(mysql->mysql TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); }/* }}} *//* {{{ proto object mysqli_stmt_get_warnings(object link) */PHP_FUNCTION(mysqli_stmt_get_warnings){ MY_STMT *stmt; zval *stmt_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &stmt_link, mysqli_stmt_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, "mysqli_stmt", 1); if (mysqli_stmt_warning_count(stmt->stmt)) { w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); }/* }}} */#ifdef HAVE_MYSQLI_SET_CHARSET/* {{{ proto bool mysqli_set_charset(object link, string csname) sets client character set */PHP_FUNCTION(mysqli_set_charset){ MY_MYSQL *mysql; zval *mysql_link; char *cs_name = NULL; unsigned int len; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &cs_name, &len) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); if (mysql_set_character_set(mysql->mysql, cs_name)) { RETURN_FALSE; } RETURN_TRUE;}/* }}} */#endif#ifdef HAVE_MYSQLI_GET_CHARSET /* {{{ proto object mysqli_get_charset(object link) U returns a character set object */PHP_FUNCTION(mysqli_get_charset){ MY_MYSQL *mysql; zval *mysql_link; char *name = NULL, *collation = NULL, *dir = NULL; uint minlength, maxlength, number, state;#if !defined(HAVE_MYSQLND) MY_CHARSET_INFO cs;#else const MYSQLND_CHARSET *cs;#endif 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); object_init(return_value);#if !defined(HAVE_MYSQLND) mysql_get_character_set_info(mysql->mysql, &cs); name = (char *)cs.csname; collation = (char *)cs.name; dir = (char *)cs.dir; minlength = cs.mbminlen; maxlength = cs.mbmaxlen; number = cs.number; state = cs.state;#else cs = mysql->mysql->charset; name = cs->name; collation = cs->collation; minlength = cs->char_minlen; maxlength = cs->char_maxlen; number = cs->nr; state = 1; /* all charsets are compiled in */#endif add_property_string(return_value, "charset", (name) ? (char *)name : "", 1); add_property_string(return_value, "collation",(collation) ? (char *)collation : "", 1); add_property_string(return_value, "dir", (dir) ? (char *)dir : "", 1); add_property_long(return_value, "min_length", minlength); add_property_long(return_value, "max_length", maxlength); add_property_long(return_value, "number", number); add_property_long(return_value, "state", state);}/* }}} */#endif/* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -