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

📄 php_mysql.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);	PHPMY_UNBUFFERED_QUERY_CHECK();	if ((mysql_result=mysql_list_dbs(&mysql->conn, NULL))==NULL) {		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to save MySQL query result");		RETURN_FALSE;	}	ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);}/* }}} *//* {{{ proto resource mysql_list_tables(string database_name [, int link_identifier])   List tables in a MySQL database */PHP_FUNCTION(mysql_list_tables){	zval **db, **mysql_link;	int id;	php_mysql_conn *mysql;	MYSQL_RES *mysql_result;		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;	}	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);	convert_to_string_ex(db);	if (!php_mysql_select_db(mysql, Z_STRVAL_PP(db) TSRMLS_CC)) {		RETURN_FALSE;	}	PHPMY_UNBUFFERED_QUERY_CHECK();	if ((mysql_result=mysql_list_tables(&mysql->conn, NULL))==NULL) {		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to save MySQL query result");		RETURN_FALSE;	}	ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);}/* }}} *//* {{{ proto resource mysql_list_fields(string database_name, string table_name [, int link_identifier])   List MySQL result fields */PHP_FUNCTION(mysql_list_fields){	zval **db, **table, **mysql_link;	int id;	php_mysql_conn *mysql;	MYSQL_RES *mysql_result;	switch(ZEND_NUM_ARGS()) {		case 2:			if (zend_get_parameters_ex(2, &db, &table)==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, &table, &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);	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(table);	if ((mysql_result=mysql_list_fields(&mysql->conn, Z_STRVAL_PP(table), NULL))==NULL) {		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to save MySQL query result");		RETURN_FALSE;	}	ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);}/* }}} *//* {{{ proto resource mysql_list_processes([int link_identifier])	Returns a result set describing the current server threads */PHP_FUNCTION(mysql_list_processes){	zval *mysql_link = NULL;	int id = -1;	php_mysql_conn *mysql;	MYSQL_RES *mysql_result;	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();	mysql_result = mysql_list_processes(&mysql->conn);	if (mysql_result == NULL) {		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to save MySQL query result");		RETURN_FALSE;	}	ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result);}/* }}} *//* {{{ proto string mysql_error([int link_identifier])   Returns the text of the error message from previous MySQL operation */PHP_FUNCTION(mysql_error){	zval **mysql_link;	int id;	php_mysql_conn *mysql;		switch(ZEND_NUM_ARGS()) {		case 0:			id = MySG(default_link);			if (id==-1) {				if (MySG(connect_error)!=NULL){					RETURN_STRING(MySG(connect_error),1);				} else {					RETURN_FALSE;				}			}			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_error(&mysql->conn), 1);}/* }}} *//* {{{ proto int mysql_errno([int link_identifier])   Returns the number of the error message from previous MySQL operation */#ifdef HAVE_MYSQL_ERRNOPHP_FUNCTION(mysql_errno){	zval **mysql_link;	int id;	php_mysql_conn *mysql;		switch(ZEND_NUM_ARGS()) {		case 0:			id = MySG(default_link);			if (id==-1) {			  	if (MySG(connect_errno)!=0){					RETURN_LONG(MySG(connect_errno));				} else {					RETURN_FALSE;				}			}			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_errno(&mysql->conn));}#endif/* }}} *//* {{{ proto int mysql_affected_rows([int link_identifier])   Gets number of affected rows in previous MySQL operation */PHP_FUNCTION(mysql_affected_rows){	zval **mysql_link;	int id;	php_mysql_conn *mysql;		switch(ZEND_NUM_ARGS()) {		case 0:			id = MySG(default_link);			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);		/* conversion from int64 to long happing here */	Z_LVAL_P(return_value) = (long) mysql_affected_rows(&mysql->conn);	Z_TYPE_P(return_value) = IS_LONG;}/* }}} *//* {{{ proto string mysql_escape_string(string to_be_escaped)   Escape string for mysql query */PHP_FUNCTION(mysql_escape_string){	zval **str;	if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &str) == FAILURE) {		ZEND_WRONG_PARAM_COUNT();	}	convert_to_string_ex(str);	/* assume worst case situation, which is 2x of the original string.	 * we don't realloc() down to the real size since it'd most probably not	 * be worth it	 */	Z_STRVAL_P(return_value) = (char *) safe_emalloc(Z_STRLEN_PP(str), 2, 1);	Z_STRLEN_P(return_value) = mysql_escape_string(Z_STRVAL_P(return_value), Z_STRVAL_PP(str), Z_STRLEN_PP(str));	Z_TYPE_P(return_value) = IS_STRING;	if (MySG(trace_mode)){		php_error_docref("function.mysql-real-escape-string" TSRMLS_CC, E_WARNING, "This function is deprecated; use mysql_real_escape_string() instead.");	}}/* }}} *//* {{{ proto string mysql_real_escape_string(string to_be_escaped [, int link_identifier])	Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection */PHP_FUNCTION(mysql_real_escape_string){	zval *mysql_link = NULL;	char *str;	char *new_str;	int id = -1, str_len, new_str_len;	php_mysql_conn *mysql;	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|r", &str, &str_len, &mysql_link) == FAILURE) {		return;	}	if (ZEND_NUM_ARGS() == 1) {		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);	new_str = emalloc(str_len * 2 + 1);	new_str_len = mysql_real_escape_string(&mysql->conn, new_str, str, str_len);	new_str = erealloc(new_str, new_str_len + 1);	RETURN_STRINGL(new_str, new_str_len, 0);}/* }}} *//* {{{ proto int mysql_insert_id([int link_identifier])   Gets the ID generated from the previous INSERT operation */PHP_FUNCTION(mysql_insert_id){	zval **mysql_link;	int id;	php_mysql_conn *mysql;		switch(ZEND_NUM_ARGS()) {		case 0:			id = MySG(default_link);			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);		/* conversion from int64 to long happing here */	Z_LVAL_P(return_value) = (long) mysql_insert_id(&mysql->conn);	Z_TYPE_P(return_value) = IS_LONG;}/* }}} *//* {{{ proto mixed mysql_result(resource result, int row [, mixed field])   Gets result data */PHP_FUNCTION(mysql_result){	zval **result, **row, **field=NULL;	MYSQL_RES *mysql_result;	MYSQL_ROW sql_row;	mysql_row_length_type *sql_row_lengths;	int field_offset=0;	switch (ZEND_NUM_ARGS()) {		case 2:			if (zend_get_parameters_ex(2, &result, &row)==FAILURE) {				RETURN_FALSE;			}			break;		case 3:			if (zend_get_parameters_ex(3, &result, &row, &field)==FAILURE) {				RETURN_FALSE;			}			break;		default:			WRONG_PARAM_COUNT;			break;	}		ZEND_FETCH_RESOURCE(mysql_result, MYSQL_RES *, result, -1, "MySQL result", le_result);			convert_to_long_ex(row);	if (Z_LVAL_PP(row)<0 || Z_LVAL_PP(row)>=(int)mysql_num_rows(mysql_result)) {		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to jump to row %ld on MySQL result index %ld", Z_LVAL_PP(row), Z_LVAL_PP(result));		RETURN_FALSE;	}	mysql_data_seek(mysql_result, Z_LVAL_PP(row));	if ((sql_row=mysql_fetch_row(mysql_result))==NULL 		|| (sql_row_lengths=mysql_fetch_lengths(mysql_result))==NULL) { /* shouldn't happen? */		RETURN_FALSE;	}		if (field) {		switch(Z_TYPE_PP(field)) {			case IS_STRING: {					int i=0;					MYSQL_FIELD *tmp_field;					char *table_name, *field_name, *tmp;					if ((tmp=strchr(Z_STRVAL_PP(field), '.'))) {						table_name = estrndup(Z_STRVAL_PP(field), tmp-Z_STRVAL_PP(field));						field_name = estrdup(tmp+1);					} else {						table_name = NULL;						field_name = estrndup(Z_STRVAL_PP(field),Z_STRLEN_PP(field));					}					mysql_field_seek(mysql_result, 0);					while ((tmp_field=mysql_fetch_field(mysql_result))) {						if ((!table_name || !strcasecmp(tmp_field->table, table_name)) && !strcasecmp(tmp_field->name, field_name)) {							field_offset = i;							break;						}						i++;					}					if (!tmp_field) { /* no match found */						php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s%s%s not found in MySQL result index %ld",									(table_name?table_name:""), (table_name?".":""), field_name, Z_LVAL_PP(result));						efree(field_name);						if (table_name) {							efree(table_name);						}						RETURN_FALSE;					}					efree(field_name);					if (table_name) {						efree(table_name);					}				}				break;			default:				convert_to_long_ex(field);				field_offset = Z_LVAL_PP(field);				if (field_offset<0 || field_offset>=(int)mysql_num_fields(mysql_result)) {					php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad column offset specified");					RETURN_FALSE;				}				break;		}	}	if (sql_row[field_offset]) {		Z_TYPE_P(return_value) = IS_STRING;		if (PG(magic_quotes_runtime)) {			Z_STRVAL_P(return_value) = php_addslashes(sql_row[field_offset], sql_row_lengths[field_offset],&Z_STRLEN_P(return_value), 0 TSRMLS_CC);		} else {				Z_STRLEN_P(return_value) = sql_row_lengths[field_offset];			Z_STRVAL_P(return_value) = (char *) safe_estrndup(sql_row[field_offset], Z_STRLEN_P(return_value));		}	} else {		Z_TYPE_P(return_value) = IS_NULL;	}}/* }}} *//* {{{ proto int mysql_num_rows(resource result)   Gets number of rows in a result */PHP_FUNCTION(mysql_num_rows){	zval **result;	MYSQL_RES *mysql_result;		if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &result)==FAILURE) {		WRONG_PARAM_COUNT;	}		ZEND_FETCH_RESOURCE(mysql_result, MYSQL_RES *, result, -1, "MySQL result", le_result);		/* conversion from int64 to long happing here */	Z_LVAL_P(return_value) = (long) mysql_num_rows(mysql_result);	Z_TYPE_P(return_value) = IS_LONG;}/* }}} *//* {{{ proto int mysql_num_fields(resource result)   Gets number of fields in a result */PHP_FUNCTION(mysql_num_fields){	zval **result;	MYSQL_RES *mysql_result;		if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &result)==FAILURE) {		WRONG_PARAM_COUNT;	}	

⌨️ 快捷键说明

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