📄 mysqli_api.c
字号:
Return the number of rows affected in the last query for the given link */PHP_FUNCTION(mysqli_stmt_affected_rows){ MY_STMT *stmt; zval *mysql_stmt; my_ulonglong rc; 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); rc = mysql_stmt_affected_rows(stmt->stmt); if (rc == (my_ulonglong) -1) { RETURN_LONG(-1); } MYSQLI_RETURN_LONG_LONG(rc)}/* }}} *//* {{{ proto bool mysqli_stmt_close(object stmt) U Close statement */PHP_FUNCTION(mysqli_stmt_close){ MY_STMT *stmt; zval *mysql_stmt; 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); mysqli_stmt_close(stmt->stmt, FALSE); stmt->stmt = NULL; php_clear_stmt_bind(stmt TSRMLS_CC); MYSQLI_CLEAR_RESOURCE(&mysql_stmt); RETURN_TRUE;}/* }}} *//* {{{ proto void mysqli_stmt_data_seek(object stmt, int offset) U Move internal result pointer */PHP_FUNCTION(mysqli_stmt_data_seek){ MY_STMT *stmt; zval *mysql_stmt; long offset; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_stmt, mysqli_stmt_class_entry, &offset) == FAILURE) { return; } if (offset < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset must be positive"); RETURN_FALSE; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID); mysql_stmt_data_seek(stmt->stmt, offset);}/* }}} *//* {{{ proto int mysqli_stmt_field_count(object stmt) U Return the number of result columns for the given statement */PHP_FUNCTION(mysqli_stmt_field_count){ MY_STMT *stmt; zval *mysql_stmt; 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); RETURN_LONG(mysql_stmt_field_count(stmt->stmt));}/* }}} *//* {{{ proto void mysqli_stmt_free_result(object stmt) U Free stored result memory for the given statement handle */PHP_FUNCTION(mysqli_stmt_free_result) { MY_STMT *stmt; zval *mysql_stmt; 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); mysql_stmt_free_result(stmt->stmt);}/* }}} *//* {{{ proto mixed mysqli_stmt_insert_id(object stmt) U Get the ID generated from the previous INSERT operation */PHP_FUNCTION(mysqli_stmt_insert_id){ MY_STMT *stmt; my_ulonglong rc; zval *mysql_stmt; 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); rc = mysql_stmt_insert_id(stmt->stmt); MYSQLI_RETURN_LONG_LONG(rc)}/* }}} *//* {{{ proto int mysqli_stmt_param_count(object stmt) U Return the number of parameter for the given statement */PHP_FUNCTION(mysqli_stmt_param_count){ MY_STMT *stmt; zval *mysql_stmt; 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); RETURN_LONG(mysql_stmt_param_count(stmt->stmt));}/* }}} *//* {{{ proto bool mysqli_stmt_reset(object stmt) U reset a prepared statement */PHP_FUNCTION(mysqli_stmt_reset) { MY_STMT *stmt; zval *mysql_stmt; 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 (mysql_stmt_reset(stmt->stmt)) { RETURN_FALSE; } RETURN_TRUE;}/* }}} *//* {{{ proto mixed mysqli_stmt_num_rows(object stmt) U Return the number of rows in statements result set */PHP_FUNCTION(mysqli_stmt_num_rows){ MY_STMT *stmt; zval *mysql_stmt; my_ulonglong rc; 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); rc = mysql_stmt_num_rows(stmt->stmt); MYSQLI_RETURN_LONG_LONG(rc)}/* }}} *//* {{{ proto bool mysqli_select_db(object link, string dbname) U Select a MySQL database */PHP_FUNCTION(mysqli_select_db) { MY_MYSQL *mysql; zval *mysql_link; char *dbname; int dbname_len; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os&", &mysql_link, mysqli_link_class_entry, &dbname, &dbname_len, UG(utf8_conv)) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); if (!mysql_select_db(mysql->mysql, dbname)) { RETURN_TRUE; } else { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; }}/* }}} *//* {{{ proto string mysqli_sqlstate(object link) U Returns the SQLSTATE error from previous MySQL operation */PHP_FUNCTION(mysqli_sqlstate) { 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_UTF8_STRING((char *)mysql_sqlstate(mysql->mysql), ZSTR_DUPLICATE);}/* }}} *//* {{{ proto bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher]) U*/#if !defined(HAVE_MYSQLND)PHP_FUNCTION(mysqli_ssl_set){ MY_MYSQL *mysql; zval *mysql_link; char *ssl_parm[5]; int ssl_parm_len[5]; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os&s&s&s&s&", &mysql_link, mysqli_link_class_entry, &ssl_parm[0], &ssl_parm_len[0], UG(utf8_conv), &ssl_parm[1], &ssl_parm_len[1], UG(utf8_conv), &ssl_parm[2], &ssl_parm_len[2], UG(utf8_conv), &ssl_parm[3], &ssl_parm_len[3], UG(utf8_conv), &ssl_parm[4], &ssl_parm_len[4], UG(utf8_conv)) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); mysql_ssl_set(mysql->mysql, ssl_parm[0], ssl_parm[1], ssl_parm[2], ssl_parm[3], ssl_parm[4]); RETURN_TRUE;}#endif/* }}} */ /* {{{ proto mixed mysqli_stat(object link) U Get current system status */PHP_FUNCTION(mysqli_stat){ MY_MYSQL *mysql; zval *mysql_link; char *stat = NULL;#if defined(HAVE_MYSQLND) uint stat_len;#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);#if !defined(HAVE_MYSQLND) if ((stat = (char *)mysql_stat(mysql->mysql))) { RETURN_UTF8_STRING(stat, ZSTR_DUPLICATE);#else if (mysqlnd_stat(mysql->mysql, &stat, &stat_len) == PASS) { RETURN_UTF8_STRINGL(stat, stat_len, ZSTR_AUTOFREE);#endif } else { RETURN_FALSE; }}/* }}} */ /* {{{ proto int mysqli_stmt_attr_set(object stmt, long attr, long mode) U*/PHP_FUNCTION(mysqli_stmt_attr_set){ MY_STMT *stmt; zval *mysql_stmt; long mode_in; ulong mode; ulong attr; int rc; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oll", &mysql_stmt, mysqli_stmt_class_entry, &attr, &mode_in) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID); if (mode_in < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "mode should be non-negative, %ld passed", mode_in); RETURN_FALSE; } mode = mode_in; if ((rc = mysql_stmt_attr_set(stmt->stmt, attr, (void *)&mode))) { RETURN_FALSE; } RETURN_TRUE;}/* }}} *//* {{{ proto int mysqli_stmt_attr_get(object stmt, long attr) U*/PHP_FUNCTION(mysqli_stmt_attr_get){ MY_STMT *stmt; zval *mysql_stmt;#if !defined(HAVE_MYSQLND) && MYSQL_VERSION_ID > 50099 my_bool value;#else ulong value = 0;#endif ulong attr; int rc; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_stmt, mysqli_stmt_class_entry, &attr) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID); if ((rc = mysql_stmt_attr_get(stmt->stmt, attr, &value))) { RETURN_FALSE; } RETURN_LONG((long)value);}/* }}} *//* {{{ proto int mysqli_stmt_errno(object stmt) U*/PHP_FUNCTION(mysqli_stmt_errno){ MY_STMT *stmt; zval *mysql_stmt; 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_INITIALIZED); RETURN_LONG(mysql_stmt_errno(stmt->stmt));}/* }}} *//* {{{ proto string mysqli_stmt_error(object stmt) U*/PHP_FUNCTION(mysqli_stmt_error) { MY_STMT *stmt; zval *mysql_stmt; 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_INITIALIZED); RETURN_UTF8_STRING((char *)mysql_stmt_error(stmt->stmt), ZSTR_DUPLICATE);}/* }}} *//* {{{ proto mixed mysqli_stmt_init(object link) U Initialize statement object*/PHP_FUNCTION(mysqli_stmt_init){ MY_MYSQL *mysql; MY_STMT *stmt; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; 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); stmt = (MY_STMT *)ecalloc(1,sizeof(MY_STMT)); if (!(stmt->stmt = mysql_stmt_init(mysql->mysql))) { efree(stmt); RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->status = MYSQLI_STATUS_INITIALIZED; mysqli_resource->ptr = (void *)stmt; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_stmt_class_entry);}/* }}} *//* {{{ proto bool mysqli_stmt_prepare(object stmt, string query) U prepare server side statement with query*/PHP_FUNCTION(mysqli_stmt_prepare){ MY_STMT *stmt; zval *mysql_stmt; char *query; int query_len; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os&", &mysql_stmt, mysqli_stmt_class_entry, &query, &query_len, UG(utf8_conv)) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_INITIALIZED); if (mysql_stmt_prepare(stmt->stmt, query, query_len)) { MYSQLI_REPORT_STMT_ERROR(stmt->stmt); RETURN_FALSE; } /* change status */ MYSQLI_SET_STATUS(&mysql_stmt, MYSQLI_STATUS_VALID); RETURN_TRUE;}/* }}} *//* {{{ proto mixed mysqli_stmt_result_metadata(object stmt) U return result set from statement */PHP_FUNCTION(mysqli_stmt_result_metadata){ MY_STMT *stmt; MYSQL_RES *result; zval *mysql_stmt; MYSQLI_RESOURCE *mysqli_resource; 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 (!(result = mysql_stmt_result_metadata(stmt->stmt))){ MYSQLI_REPORT_STMT_ERROR(stmt->stmt); RETURN_FALSE; } 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 bool mysqli_stmt_store_result(stmt) U*/PHP_FUNCTION(mysqli_stmt_store_result){ MY_STMT *stmt; zval *mysql_stmt; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -