From: foobar Date: Sun, 28 Apr 2002 06:38:12 +0000 (+0000) Subject: @- Added optional 3rd parameter to mysql_select_db() which makes it return X-Git-Tag: php-4.3.0dev-ZendEngine2-Preview1~388 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=80f9fdf3c7ec82db138776e72f750e04b718f83a;p=php @- Added optional 3rd parameter to mysql_select_db() which makes it return @ the previously selected database name. (Jani) --- diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index b94d1b0207..424b70282d 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -769,13 +769,14 @@ PHP_FUNCTION(mysql_close) } /* }}} */ -/* {{{ proto bool mysql_select_db(string database_name [, int link_identifier]) +/* {{{ proto bool mysql_select_db(string database_name [, int link_identifier [, bool return_prev_dbname]]) Selects a MySQL database */ PHP_FUNCTION(mysql_select_db) { - zval **db, **mysql_link; - int id; + zval **db, **mysql_link, **ret_prevdb; + int id, ret_dbname=0; php_mysql_conn *mysql; + char *prev_db=NULL; switch(ZEND_NUM_ARGS()) { case 1: @@ -791,20 +792,38 @@ PHP_FUNCTION(mysql_select_db) } id = -1; break; + case 3: + if (zend_get_parameters_ex(3, &db, &mysql_link, &ret_prevdb)==FAILURE) { + RETURN_FALSE; + } + id = -1; + convert_to_long_ex(ret_prevdb); + ret_dbname = Z_LVAL_PP(ret_prevdb); + 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); + + /* Get the previous database name */ + if (ret_dbname && mysql->conn.db) { + prev_db=estrdup(mysql->conn.db); + } if (mysql_select_db(&mysql->conn, Z_STRVAL_PP(db))!=0) { - RETURN_FALSE; + RETVAL_FALSE; + } else if (prev_db) { + RETVAL_STRING(prev_db, 1); } else { - RETURN_TRUE; + RETVAL_TRUE; + } + + if (prev_db) { + efree(prev_db); } } /* }}} */