diff options
Diffstat (limited to 'ext/mysqli/mysqli_api.c')
| -rw-r--r-- | ext/mysqli/mysqli_api.c | 116 | 
1 files changed, 44 insertions, 72 deletions
| diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 2cda0aa903..70a8cc6303 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -566,14 +566,17 @@ PHP_FUNCTION(mysqli_character_set_name)  {  	MY_MYSQL	*mysql;  	zval		*mysql_link; +	const char	*cs_name;  	if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {  		return;  	}  	MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); - -	RETURN_STRING((char *)mysql_character_set_name(mysql->mysql), 1); +	cs_name = mysql_character_set_name(mysql->mysql); +	if (cs_name) { +		RETURN_STRING(cs_name, 1); +	}  }  /* }}} */ @@ -732,12 +735,16 @@ PHP_FUNCTION(mysqli_error)  {  	MY_MYSQL	*mysql;  	zval		*mysql_link; +	const char	*err;  	if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {  		return;  	}  	MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); -	RETURN_STRING((char *)mysql_error(mysql->mysql),1); +	err = mysql_error(mysql->mysql); +	if (err) { +		RETURN_STRING(err, 1); +	}  }  /* }}} */ @@ -1268,7 +1275,10 @@ PHP_FUNCTION(mysqli_free_result)     Get MySQL client info */  PHP_FUNCTION(mysqli_get_client_info)  { -	RETURN_STRING((char *)mysql_get_client_info(), 1); +	const char * info = mysql_get_client_info(); +	if (info) { +		RETURN_STRING(info, 1); +	}  }  /* }}} */ @@ -1320,15 +1330,18 @@ PHP_FUNCTION(mysqli_get_server_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_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); -	RETURN_STRING((char *)mysql_get_server_info(mysql->mysql), 1); +	info = mysql_get_server_info(mysql->mysql); +	if (info) { +		RETURN_STRING(info, 1); +	}  } -  /* }}} */  /* {{{ proto int mysqli_get_server_version(object link) @@ -1361,7 +1374,9 @@ PHP_FUNCTION(mysqli_info)  	MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID);  	info = mysql_info(mysql->mysql); -	RETURN_STRING((info) ? (char *)info : "", 1); +	if (info) { +		RETURN_STRING(info, 1); +	}  }  /* }}} */ @@ -1456,64 +1471,6 @@ PHP_FUNCTION(mysqli_kill)  }  /* }}} */ -/* {{{ proto void mysqli_set_local_infile_default(object link) -   unsets user defined handler for load local infile command */ -#if !defined(MYSQLI_USE_MYSQLND) -PHP_FUNCTION(mysqli_set_local_infile_default) -{ -	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_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); - -	if (mysql->li_read) { -		zval_ptr_dtor(&(mysql->li_read)); -		mysql->li_read = NULL; -	} -} -/* }}} */ - -/* {{{ proto bool mysqli_set_local_infile_handler(object link, callback read_func) -   Set callback functions for LOAD DATA LOCAL INFILE */ -PHP_FUNCTION(mysqli_set_local_infile_handler) -{ -	MY_MYSQL	*mysql; -	zval		*mysql_link; -	char		*callback_name; -	zval		*callback_func; - -	if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oz", &mysql_link, mysqli_link_class_entry, -			&callback_func) == FAILURE) { -		return; -	} - -	MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); - -	/* check callback function */ -	if (!zend_is_callable(callback_func, 0, &callback_name TSRMLS_CC)) { -		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a valid callback function %s", callback_name); -		efree(callback_name); -		RETURN_FALSE; -	} -	efree(callback_name); - -	/* save callback function */ -	if (!mysql->li_read) { -		MAKE_STD_ZVAL(mysql->li_read); -	} else { -		zval_dtor(mysql->li_read); -	} -	ZVAL_ZVAL(mysql->li_read, callback_func, 1, 0); - -	RETURN_TRUE; -} -#endif -/* }}} */ -  /* {{{ proto bool mysqli_more_results(object link)     check if there any more query results from a multi query */  PHP_FUNCTION(mysqli_more_results) @@ -1645,10 +1602,10 @@ static int mysqli_options_get_option_zval_type(int option)  #endif /* MYSQLI_USE_MYSQLND */  		case MYSQL_OPT_CONNECT_TIMEOUT:  #ifdef MYSQL_REPORT_DATA_TRUNCATION -                case MYSQL_REPORT_DATA_TRUNCATION: +		case MYSQL_REPORT_DATA_TRUNCATION:  #endif -                case MYSQL_OPT_LOCAL_INFILE: -                case MYSQL_OPT_NAMED_PIPE: +		case MYSQL_OPT_LOCAL_INFILE: +		case MYSQL_OPT_NAMED_PIPE:  #ifdef MYSQL_OPT_PROTOCOL                  case MYSQL_OPT_PROTOCOL:  #endif /* MySQL 4.1.0 */ @@ -1664,7 +1621,7 @@ static int mysqli_options_get_option_zval_type(int option)  		case MYSQL_OPT_RECONNECT:  #endif /* MySQL 5.0.13 */  #ifdef MYSQL_OPT_SSL_VERIFY_SERVER_CERT -                case MYSQL_OPT_SSL_VERIFY_SERVER_CERT: +		case MYSQL_OPT_SSL_VERIFY_SERVER_CERT:  #endif /* MySQL 5.0.23 */  #ifdef MYSQL_OPT_COMPRESS  		case MYSQL_OPT_COMPRESS: @@ -1688,6 +1645,9 @@ static int mysqli_options_get_option_zval_type(int option)  		case MYSQL_INIT_COMMAND:  		case MYSQL_SET_CHARSET_NAME:  		case MYSQL_SET_CHARSET_DIR: +#if MYSQL_VERSION_ID > 50605 || defined(MYSQLI_USE_MYSQLND) +		case MYSQL_SERVER_PUBLIC_KEY: +#endif  			return IS_STRING;  		default: @@ -2154,12 +2114,16 @@ PHP_FUNCTION(mysqli_sqlstate)  {  	MY_MYSQL	*mysql;  	zval		*mysql_link; +	const char	*state;  	if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {  		return;  	}  	MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); -	RETURN_STRING((char *)mysql_sqlstate(mysql->mysql),1); +	state = mysql_sqlstate(mysql->mysql); +	if (state) { +		RETURN_STRING(state, 1); +	}  }  /* }}} */ @@ -2337,13 +2301,17 @@ PHP_FUNCTION(mysqli_stmt_error)  {  	MY_STMT	*stmt;  	zval 	*mysql_stmt; +	const char * err;  	if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {  		return;  	}  	MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_INITIALIZED); -	RETURN_STRING((char *)mysql_stmt_error(stmt->stmt),1); +	err = mysql_stmt_error(stmt->stmt); +	if (err) { +		RETURN_STRING(err, 1); +	}  }  /* }}} */ @@ -2482,13 +2450,17 @@ PHP_FUNCTION(mysqli_stmt_sqlstate)  {  	MY_STMT	*stmt;  	zval	*mysql_stmt; +	const char * state;  	if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {  		return;  	}  	MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); -	RETURN_STRING((char *)mysql_stmt_sqlstate(stmt->stmt),1); +	state = mysql_stmt_sqlstate(stmt->stmt); +	if (state) { +		RETURN_STRING(state, 1); +	}  }  /* }}} */ | 
