2011-04-13 106 views
-1

我有一个非常大的非结构化脚本。进行临时数据库连接而不会丢失原始默认连接

在脚本的某个位置,建立了数据库连接。

有一段时间后,我需要建立一个新的连接到另一个数据库,运行查询然后断开连接。

完成此操作后,我需要所有后续的mysql_query()调用才能使用原始数据库链接。

我知道我可以从第一个mysql_connect()捕获链接标识符,并在所有相关的mysql_query()调用中使用该标识符,但我不想修改比我更多的代码。我希望做这样的事情:

//... loads of code ... 

mysql_connect("original connection"); 
mysql_query(...); // don't want to modify these lines 

//... loads more code ... 

$link = get_current_mysql_link_identifier(); // imaginary function 
$new_link = mysql_connect("my new connection"); 
mysql_query(...); // uses new connection 
mysql_close($new_link); 
reinstate_old_link($link); // imaginary function 

//... loads more code ... 

mysql_query(...) // line remains unchanged. uses original DB link 

没有这些虚函数,一旦第二连接关闭,请求mysql_query()不会默认为原始连接;它会继续尝试使用更新的关闭连接。

+0

我认为,**但**我很可能是**错误**,一旦第二次连接关闭,mysql_' *函数将在下一个可用连接上运行,在这种情况下,它将是第一个连接。 – Treffynnon 2011-04-13 16:50:03

+0

不是一个优雅的解决方案,但为什么在完成辅助数据库查询后,您不会重新连接到第一个数据库? – Raisen 2011-04-13 16:54:46

+0

@Treffynnon我已经做了一些测试,看起来它不会回退到mysql_close()之后的原始问题() – aidan 2011-04-13 17:00:24

回答

1

mysql_connect()返回对连接的引用,然后可以在其他语句中提供该引用以指示要使用的连接。我相信你也必须指定new_link参数来创建一个新的连接。

+0

嗨吉姆。引用我的原始问题:“我知道我可以从第一个mysql_connect()捕获链接标识符,并在所有相关的mysql_query()调用中使用该标识符,但我不想修改比我更多的代码”。看起来我想达到的是不可能的。 – aidan 2011-04-15 11:38:09