2011-04-13 105 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