Re: cvs: php4 /ext/mysql php_mysql.c

From: Date: Sun, 28 Apr 2002 15:59:13 +0000
Subject: Re: cvs: php4 /ext/mysql php_mysql.c
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-11499@lists.php.net to get a copy of this message
Yes, I'm aware of that. But do you think many people actually use that way to select DB? :) Anyway, it's just an optional feature. --Jani On Sun, 28 Apr 2002, Markus Fischer wrote: > Hi, > > I hope you know that you can easily fool this: > > php -r ' > error_reporting(E_ALL); > > $l = mysql_connect("","phptest1","phptest1"); > > mysql_select_db("phptest1"); > > mysql_query("use phptest2"); > > $foo = mysql_select_db("phptest1", $l, true); > > var_dump($foo); > '; > > The script outputs "phptest1" though the last used database > was "phptest2". > > - Markus > >On Sun, Apr 28, 2002 at 06:38:13AM -0000, Jani Taskinen wrote : >> sniper Sun Apr 28 02:38:13 2002 EDT >> >> Modified files: >> /php4/ext/mysql php_mysql.c >> Log: >> @- Added optional 3rd parameter to mysql_select_db() which makes it return >> @ the previously selected database name. (Jani) >> >> >> Index: php4/ext/mysql/php_mysql.c >> diff -u php4/ext/mysql/php_mysql.c:1.134 php4/ext/mysql/php_mysql.c:1.135 >> --- php4/ext/mysql/php_mysql.c:1.134 Sun Apr 28 01:36:05 2002 >> +++ php4/ext/mysql/php_mysql.c Sun Apr 28 02:38:12 2002 >> @@ -16,7 +16,7 @@ >> +----------------------------------------------------------------------+ >> */ >> >> -/* $Id: php_mysql.c,v 1.134 2002/04/28 05:36:05 sniper Exp $ */ >> +/* $Id: php_mysql.c,v 1.135 2002/04/28 06:38:12 sniper Exp $ */ >> >> >> /* TODO: >> @@ -769,13 +769,14 @@ >> } >> /* }}} */ >> >> -/* {{{ 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 @@ >> } >> 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); >> } >> } >> /* }}} */ >> >> >> >> -- >> PHP CVS Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php > > --

« previous php.cvs (#11499) next »