2009-08-14 69 views
0

我需要打開一個Mysql連接,關閉它並讓舊的遺留代碼在那之後運行。遺留代碼具有自己的連接,只需調用mysql_query($ sql)而不使用資源參數。在PHP中處理兩個mysql連接

我該如何處理?我可以將Mysql連接器設置爲全局連接器嗎?我必須重新執行mysql_connect()語句嗎?遺留代碼現在不能被重構。

這裏一個簡短的演示

<?php 

function show() 
{ 
    $a = mysql_fetch_array(mysql_query('select database()')); 
    echo $a[0] . "<br>"; 
} 

$conn = mysql_connect('localhost', 'root', '', TRUE); 
mysql_select_db('dredd'); 
show(); 

mysql_connect('localhost', 'root', '', TRUE); 
mysql_select_db('afup'); 
show(); 
mysql_close(); 

$a = mysql_fetch_array(mysql_query('select database()', $conn)); 
echo $a[0] . "<br>"; 

show(); 

的第一選擇是確定的,後兩個,第三個是確定的,因爲它擁有的ressource,但第四爆發(「訪問被拒絕的用戶‘ODBC’@」 localhost'(使用密碼:否)「)。

問候,塞德里克

回答

5

如果不指定,將使用最後創建了一個連接,因此,如果您關閉其他連接第一,例如,它應該是確定

//open your db connection 
$conn1 = mysql_connect(); 
mysql_query($sql, $conn1); 
mysql_close($conn1); 

//open legacy code's db connection 
$conn = mysql_connect(); 
//run legacy code 

如果您有問題,它可能是更容易使用PDO或mysqli的第二連接,因爲你知道他們是在不修改原有代碼肯定分開。

+0

我的數據庫連接用於錯誤追蹤系統,因此遺留代碼被中斷,我的代碼運行並且遺留代碼繼續。但你的想法非常好,謝謝!我儘快嘗試。 – 2009-08-16 15:41:13