2010-02-18 50 views
0

我有2個函數,函數get_user_info()連接到一個名爲'users'的數據庫,另一個名爲print_info()連接到一個名爲'blah'的數據庫。我在print_info()中調用get_user_info(),因此它可以檢索信息。它們連接到2個不同的數據庫並創建2個不同的連接,我使用另一個函數連接到名爲connect_db($ dbidhere)的db。當我調用get_user_info()時,它像取消其他連接一樣,並且在我調用get_user_info()後必須重新連接到名爲「blah」的數據庫。有沒有一種方法可以在函數內部建立專用連接,並且不會取消其他連接?php私有mysql連接

function get_user_info() { 
connect_db($db1); 
$query = 'blah blah'; 
$row = mysql_fetch_array($query); 
echo $row['cool']; 
} 

function print_info() { 
connect_db($db2); 
$query = 'blah blah again'; 
get_user_info(); // Here is where it cancels out the 'connect_db($db2)' and replaces it with get_user_info connection 
} 

回答

2

它不會取消它,你要求它取代默認連接。

你可能想看看如何使用從mysql_connect返回的值作爲可選的鏈接標識符參數給大多數函數,如mysql_query與數據庫交談。

編輯︰假設你還沒有,很難說,因爲你已經省略了mysql_query()和mysql_connect()調用。

+0

才意識到它是使用相同的變量進行連接,以便即時假設多數民衆贊成取代它,謝謝老兄! – David 2010-02-19 00:03:10

+0

@大衛:我希望你解決它。 – Fredrik 2010-02-19 00:05:09

1

將數據庫處理程序作爲第二個參數傳遞給mysql_query()是很重要的。

$result = mysql_query('select ...', $db1); OR
$result = mysql_query('select ...', $db2);

<?php 

$DB1 = mysql_connect('localhost', 'user', 'pass') or die('Could not connect to localhost db'); 
mysql_select_db('foo', $db1); 

$DB2 = mysql_connect('192.168.0.2', 'user', 'pass') or die('Could not connect to 192.168.0.2 db'); 
mysql_select_db('bar', $db2); 

function get_user_info($id){ 

    // access to DB1 
    global $DB1; 

    // try something like: 
    if($result = mysql_query("select user.* from user id = {$id}", $DB1)){ 
    $user = mysql_fetch_assoc($result); 
    echo $user['name']; 
    } 

} 

function print_info(){ 

    // access to DB2 
    global $DB2 

    // try something like: 
    if($result = mysql_query("select user_id from foo where bar = 'zim'", $DB2)){ 
    $foo = mysql_fetch_assoc($result); 
    } 

    get_user_info($foo['user_id']); 

} 

?>