2012-08-24 55 views
0

我嘗試從一個PHP函數連接不同的數據庫(假設有一個當前連接到另一個數據庫)。我將mysql_connect()new_link參數設置爲TRUE,如下所示。這怎麼可能下面的代碼返回global_thread_id=16357138 local_thread_id=16357139 current_global=16357139(意爲本地覆寫先前連接的連接),儘管true在mysql_connect()函數在PHP設置多個數據庫連接不能使用new_link = TRUE和sql.safe_mode = OFF

此外,sql.safe_mode = OFF

// Class static method 
static function Query($sql) { 
     $global_thread_id = mysql_thread_id(); 
     if ($link = mysql_connect(FB_DB_HOST, FB_DB_USER, FB_DB_PASS, true)) 
     { 
      $local_thread_id = mysql_thread_id($link);       
      echo 'global_thread_id='.$global_thread_id.' local_thread_id='.$local_thread_id.' current_global='.mysql_thread_id(); 
     } 
} 

回答

1

mysql_thread_id()獲取最新的線程ID,而不是一個 「全局」

mysql_thread_id PHP手冊說:

檢索當前主題ID

// Class static method 
static function Query($sql) { 

     /* fetch latest thread id = global */ 
     $global_thread_id = mysql_thread_id(); 
     if ($link = mysql_connect(FB_DB_HOST, FB_DB_USER, FB_DB_PASS, true)) 
     { 
      /* fetch thread id from $link */ 
      $local_thread_id = mysql_thread_id($link); 

      /* echo 2 vars and the latest thread id = same as link */ 
      echo 'global_thread_id='.$global_thread_id.' local_thread_id='.$local_thread_id.' current_global='.mysql_thread_id(); 
     } 
} 
+0

是的我知道了。我的意思是「全局」是我的腳本有一個主要連接在頁面上的任何地方使用,因此mysql_thread_id()沒有$ link來獲取這個主線程ID(因此我稱之爲全局連接),對於我使用的第二個連接$ link資源來獲取我所謂的「本地」線程ID ... – Steve

+0

現在我的問題是mysql_connect()調用mysql_connect()後調用mysql_thread_id()返回的線程ID,儘管'new_link'參數設置爲TRUE – Steve

+0

if你有更多的數據庫連接,在與mysql交談時總是使用$ link varibale,我的方法是有一個數據庫類,其中我將$ link設置爲一個類變量。但如果你要修復所有的mysql調用,你可能想從舊的depricated函數轉移到PDO –