Re: cvs: php4 /ext/mysql php_mysql.c
| From: | Jani Taskinen | 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
>
>
--