mirror of
https://github.com/php/php-src.git
synced 2025-01-18 09:43:36 +08:00
removed changes for mysql_select_db (optional parameter)
Why: 1) Its not the common way to add additionally functionality for functions or features which are already implemented in SQL. Therefore also a lot of mysql functions are marked as deprecated (and will be removed in near future) 2) The implemented workaround works only when mysql_select_db was called before (fetching the databasename from mysql->conn.db). It returns invalid or inconsistent results e.g.: - when "USE databasename" via mysql_query was used - when database was dropped or grant privileges had changed. In conjunction with persistent connection, there are also some inconsistencies, cause mysql_select_db returns the databasename from an old connection. To determine the database name just use the SQL command "SELECT DATABASE()"
This commit is contained in:
parent
96276bf8a0
commit
cbcdae7002
@ -833,14 +833,13 @@ PHP_FUNCTION(mysql_close)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto bool mysql_select_db(string database_name [, int link_identifier [, bool return_prev_dbname]])
|
||||
/* {{{ proto bool mysql_select_db(string database_name [, int link_identifier])
|
||||
Selects a MySQL database */
|
||||
PHP_FUNCTION(mysql_select_db)
|
||||
{
|
||||
zval **db, **mysql_link, **ret_prevdb;
|
||||
int id, ret_dbname=0;
|
||||
zval **db, **mysql_link;
|
||||
int id;
|
||||
php_mysql_conn *mysql;
|
||||
char *prev_db=NULL;
|
||||
|
||||
switch(ZEND_NUM_ARGS()) {
|
||||
case 1:
|
||||
@ -856,14 +855,6 @@ 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;
|
||||
@ -873,22 +864,11 @@ PHP_FUNCTION(mysql_select_db)
|
||||
|
||||
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) {
|
||||
RETVAL_FALSE;
|
||||
} else if (prev_db) {
|
||||
RETVAL_STRING(prev_db, 1);
|
||||
} else {
|
||||
RETVAL_TRUE;
|
||||
}
|
||||
|
||||
if (prev_db) {
|
||||
efree(prev_db);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user