⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 php_mysql.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
{	zval **mysql_link;	int id;	php_mysql_conn *mysql;	switch(ZEND_NUM_ARGS()) {		case 0:			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);			CHECK_LINK(id);			break;		case 1:			if (zend_get_parameters_ex(1,&mysql_link)==FAILURE) {				RETURN_FALSE;			}			id = -1;			break;		default:			WRONG_PARAM_COUNT;			break;	}	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);	RETURN_STRING((char *)mysql_get_host_info(&mysql->conn),1);}/* }}} *//* {{{ proto int mysql_get_proto_info([int link_identifier])   Returns the protocol version used by current connection */PHP_FUNCTION(mysql_get_proto_info){	zval **mysql_link;	int id;	php_mysql_conn *mysql;	switch(ZEND_NUM_ARGS()) {		case 0:			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);			CHECK_LINK(id);			break;		case 1:			if (zend_get_parameters_ex(1,&mysql_link)==FAILURE) {				RETURN_FALSE;			}			id = -1;			break;		default:			WRONG_PARAM_COUNT;			break;	}	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);	RETURN_LONG(mysql_get_proto_info(&mysql->conn));}/* }}} *//* {{{ proto string mysql_get_server_info([int link_identifier])   Returns a string that represents the server version number */PHP_FUNCTION(mysql_get_server_info){	zval **mysql_link;	int id;	php_mysql_conn *mysql;	switch(ZEND_NUM_ARGS()) {		case 0:			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);			CHECK_LINK(id);			break;		case 1:			if (zend_get_parameters_ex(1,&mysql_link)==FAILURE) {				RETURN_FALSE;			}			id = -1;			break;		default:			WRONG_PARAM_COUNT;			break;	}	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);	RETURN_STRING((char *)mysql_get_server_info(&mysql->conn),1);}/* }}} *//* {{{ proto string mysql_info([int link_identifier])   Returns a string containing information about the most recent query */PHP_FUNCTION(mysql_info){	zval *mysql_link;	int id = -1;	char *str;	php_mysql_conn *mysql;	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r", &mysql_link) == FAILURE) {		return;	}	if (ZEND_NUM_ARGS() == 0) {		id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);		CHECK_LINK(id);	}	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, "MySQL-Link", le_link, le_plink);	if ((str = (char *)mysql_info(&mysql->conn))) {		RETURN_STRING(str,1);	} else {		RETURN_FALSE;	}}/* }}} *//* {{{ proto int mysql_thread_id([int link_identifier])	Returns the thread id of current connection */PHP_FUNCTION(mysql_thread_id){	zval *mysql_link = NULL;	int  id = -1;	php_mysql_conn *mysql;	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r", &mysql_link) == FAILURE) {		return;	}	if (ZEND_NUM_ARGS() == 0) {		id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);		CHECK_LINK(id);			}	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, "MySQL-Link", le_link, le_plink);	RETURN_LONG(mysql_thread_id(&mysql->conn));}/* }}} *//* {{{ proto string mysql_stat([int link_identifier])	Returns a string containing status information */PHP_FUNCTION(mysql_stat){	zval *mysql_link = NULL;	int id = -1;	php_mysql_conn *mysql;	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r", &mysql_link) == FAILURE) {		return;	}	if (ZEND_NUM_ARGS() == 0) {		id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);		CHECK_LINK(id);			}	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, "MySQL-Link", le_link, le_plink);	PHPMY_UNBUFFERED_QUERY_CHECK();	RETURN_STRING((char *)mysql_stat(&mysql->conn), 1);}/* }}} *//* {{{ proto string mysql_client_encoding([int link_identifier])	Returns the default character set for the current connection */PHP_FUNCTION(mysql_client_encoding){	zval *mysql_link = NULL;	int id = -1;	php_mysql_conn *mysql;	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r", &mysql_link) == FAILURE) {		return;	}	if (ZEND_NUM_ARGS() == 0) {		id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);		CHECK_LINK(id);	}	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, &mysql_link, id, "MySQL-Link", le_link, le_plink);	RETURN_STRING((char *)mysql_character_set_name(&mysql->conn), 1);}/* }}} */#endif#ifndef NETWARE		/* The below two functions not supported on NetWare */#if MYSQL_VERSION_ID < 40000/* {{{ proto bool mysql_create_db(string database_name [, int link_identifier])   Create a MySQL database */PHP_FUNCTION(mysql_create_db){	zval **db, **mysql_link;	int id;	php_mysql_conn *mysql;	switch(ZEND_NUM_ARGS()) {		case 1:			if (zend_get_parameters_ex(1, &db)==FAILURE) {				RETURN_FALSE;			}			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);			CHECK_LINK(id);			break;		case 2:			if (zend_get_parameters_ex(2, &db, &mysql_link)==FAILURE) {				RETURN_FALSE;			}			id = -1;			break;		default:			WRONG_PARAM_COUNT;			break;	}	php_error_docref(NULL TSRMLS_CC, E_NOTICE, "This function is deprecated, please use mysql_query() to issue a SQL CREATE DATABASE statement instead.");		ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);	PHPMY_UNBUFFERED_QUERY_CHECK();	convert_to_string_ex(db);	if (mysql_create_db(&mysql->conn, Z_STRVAL_PP(db))==0) {		RETURN_TRUE;	} else {		RETURN_FALSE;	}}/* }}} *//* {{{ proto bool mysql_drop_db(string database_name [, int link_identifier])   Drops (delete) a MySQL database */PHP_FUNCTION(mysql_drop_db){	zval **db, **mysql_link;	int id;	php_mysql_conn *mysql;		switch(ZEND_NUM_ARGS()) {		case 1:			if (zend_get_parameters_ex(1, &db)==FAILURE) {				RETURN_FALSE;			}			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);			CHECK_LINK(id);			break;		case 2:			if (zend_get_parameters_ex(2, &db, &mysql_link)==FAILURE) {				RETURN_FALSE;			}			id = -1;			break;		default:			WRONG_PARAM_COUNT;			break;	}	php_error_docref(NULL TSRMLS_CC, E_NOTICE, "This function is deprecated, please use mysql_query() to issue a SQL DROP DATABASE statement instead.");		ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);		convert_to_string_ex(db);	if (mysql_drop_db(&mysql->conn, Z_STRVAL_PP(db))==0) {		RETURN_TRUE;	} else {		RETURN_FALSE;	}}/* }}} */#endif#endif	/* NETWARE *//* {{{ php_mysql_do_query_general */static void php_mysql_do_query_general(zval **query, zval **mysql_link, int link_id, zval **db, int use_store, zval *return_value TSRMLS_DC){	php_mysql_conn *mysql;	MYSQL_RES *mysql_result;		ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, link_id, "MySQL-Link", le_link, le_plink);		if (db) {		convert_to_string_ex(db);		if (!php_mysql_select_db(mysql, Z_STRVAL_PP(db) TSRMLS_CC)) {			RETURN_FALSE;		}	}	PHPMY_UNBUFFERED_QUERY_CHECK();	convert_to_string_ex(query);	/* check explain */	if (MySG(trace_mode)) {		if (!strncasecmp("select", Z_STRVAL_PP(query), 6)){			MYSQL_ROW 	row;						char *newquery = (char *)emalloc(Z_STRLEN_PP(query) + 10);				sprintf ((char *)newquery, "EXPLAIN %s", Z_STRVAL_PP(query));			mysql_real_query(&mysql->conn, newquery, strlen(newquery));			efree (newquery);			if (mysql_errno(&mysql->conn)) {				php_error_docref("http://www.mysql.com/doc" TSRMLS_CC, E_WARNING, "%s", mysql_error(&mysql->conn));				RETURN_FALSE;			}			else {    			mysql_result = mysql_use_result(&mysql->conn);				while ((row = mysql_fetch_row(mysql_result))) {					if (!strcmp("ALL", row[1])) {						php_error_docref("http://www.mysql.com/doc" TSRMLS_CC, E_WARNING, "Your query requires a full tablescan (table %s, %s rows affected). Use EXPLAIN to optimize your query.", row[0], row[6]);					} else if (!strcmp("INDEX", row[1])) {						php_error_docref("http://www.mysql.com/doc" TSRMLS_CC, E_WARNING, "Your query requires a full indexscan (table %s, %s rows affected). Use EXPLAIN to optimize your query.", row[0], row[6]);					}				}				mysql_free_result(mysql_result);			}		}		} /* end explain */	/* mysql_query is binary unsafe, use mysql_real_query */#if MYSQL_VERSION_ID > 32199	if (mysql_real_query(&mysql->conn, Z_STRVAL_PP(query), Z_STRLEN_PP(query))!=0) {		/* check possible error */		if (MySG(trace_mode)){			if (mysql_errno(&mysql->conn)){				php_error_docref("http://www.mysql.com/doc" TSRMLS_CC, E_WARNING, "%s", mysql_error(&mysql->conn)); 			}		}		RETURN_FALSE;	}#else	if (mysql_query(&mysql->conn, Z_STRVAL_PP(query))!=0) {		/* check possible error */		if (MySG(trace_mode)){			if (mysql_errno(&mysql->conn)){				php_error_docref("http://www.mysql.com/doc" TSRMLS_CC, E_WARNING, mysql_error(&mysql->conn)); 			}		}		RETURN_FALSE;	}#endif	if(use_store == MYSQL_USE_RESULT) {		mysql_result=mysql_use_result(&mysql->conn);	} else {		mysql_result=mysql_store_result(&mysql->conn);	}	if (!mysql_result) {		if (PHP_MYSQL_VALID_RESULT(&mysql->conn)) { /* query should have returned rows */			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to save result set");			RETURN_FALSE;		} else {			RETURN_TRUE;		}	}	MySG(result_allocated)++;	ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);	if (use_store == MYSQL_USE_RESULT) {		mysql->active_result_id = Z_LVAL_P(return_value);	}}/* }}} *//* {{{ php_mysql_do_query */static void php_mysql_do_query(INTERNAL_FUNCTION_PARAMETERS, int use_store){	zval **query, **mysql_link;	int id;		switch(ZEND_NUM_ARGS()) {		case 1:			if (zend_get_parameters_ex(1, &query)==FAILURE) {				RETURN_FALSE;			}			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);			CHECK_LINK(id);			break;		case 2:			if (zend_get_parameters_ex(2, &query, &mysql_link)==FAILURE) {				RETURN_FALSE;			}			id = -1;			break;		default:			WRONG_PARAM_COUNT;			break;	}	php_mysql_do_query_general(query, mysql_link, id, NULL, use_store, return_value TSRMLS_CC);}/* }}} *//* {{{ proto resource mysql_query(string query [, int link_identifier])   Sends an SQL query to MySQL */PHP_FUNCTION(mysql_query){	php_mysql_do_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_STORE_RESULT);}/* }}} *//* {{{ proto resource mysql_unbuffered_query(string query [, int link_identifier])   Sends an SQL query to MySQL, without fetching and buffering the result rows */PHP_FUNCTION(mysql_unbuffered_query){	php_mysql_do_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_USE_RESULT);}/* }}} *//* {{{ proto resource mysql_db_query(string database_name, string query [, int link_identifier])   Sends an SQL query to MySQL */PHP_FUNCTION(mysql_db_query){	zval **db, **query, **mysql_link;	int id;		switch(ZEND_NUM_ARGS()) {		case 2:			if (zend_get_parameters_ex(2, &db, &query)==FAILURE) {				RETURN_FALSE;			}			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);			CHECK_LINK(id);			break;		case 3:			if (zend_get_parameters_ex(3, &db, &query, &mysql_link)==FAILURE) {				RETURN_FALSE;			}			id = -1;			break;		default:			WRONG_PARAM_COUNT;			break;	}		if (MySG(trace_mode) || !strcasecmp(get_active_function_name(TSRMLS_C), "mysql")) {		php_error_docref(NULL TSRMLS_CC, E_NOTICE, "This function is deprecated; use mysql_query() instead.");	}		php_mysql_do_query_general(query, mysql_link, id, db, MYSQL_STORE_RESULT, return_value TSRMLS_CC);}/* }}} *//* {{{ proto resource mysql_list_dbs([int link_identifier])   List databases available on a MySQL server */PHP_FUNCTION(mysql_list_dbs){	zval **mysql_link;	int id;	php_mysql_conn *mysql;	MYSQL_RES *mysql_result;	switch(ZEND_NUM_ARGS()) {		case 0:			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);			CHECK_LINK(id);			break;		case 1:			if (zend_get_parameters_ex(1, &mysql_link)==FAILURE) {				RETURN_FALSE;			}			id = -1;			break;		default:			WRONG_PARAM_COUNT;			break;	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -