2012-03-28 135 views
1

我試圖連接到2個數據庫。其中之一是遠程數據庫。一旦我連接到遠程數據庫我遇到了問題,它給了我'提供的參數無效'mysql_fetch_array()。所以我改變了我的數據庫類,並試圖使其工作。但我仍然得到錯誤:(。它不斂$connection變量。 我得到「未定義的變量連接」。 這是我的連接類。請幫助我。感謝您的幫助。無法連接到數據庫

global $connection; 

class Database{ 

function __construct() 
{ 
    $this->open_connection(); 
} 

public function open_connection() 
{ 

    $connection = $this->connection= mysql_connect(SERVER,UNAME,PASSWORD); 

    if(!$this->connection) 
    { 
     return false; 
    } 

    if(!mysql_select_db(DB_NAME,$this->connection)) 
    { 
     return false; 
    } 
    return true; 
} 

public function close_connection() 
{ 
    mysql_close($this->connection); 
} 
//open_connection(); 
} 

$database = new Database(); 

而在另一個頁面:

$result=mysql_query($query,$connection);   

while ($rec = mysql_fetch_array($result)) ... etc 

PS所有的常量和其他變量是正確的

+0

您是否收到任何錯誤?如果是的話發佈.. – Milap 2012-03-28 05:57:10

+0

那裏的那些常量被定義? – k102 2012-03-28 05:59:58

+0

是否在您打開第二個數據庫連接後覆蓋$連接,因爲它是全局的? – tartar 2012-03-28 06:01:09

回答

1

一類使用全局變量是像死亡 你可以爲提供一類領域。連接鏈路

$this->connection = mysql_connect(...); 

而且你的類

$result = mysql_query($sql, $object->connection); 

之外我還建議你使用現有的mysqli類。

+0

謝謝,我在哪裏可以找到mysqli類?我沒聽說過。 – guitarlass 2012-03-28 07:39:05

+0

好吧,這是我接下來嘗試的,我宣佈'公共$連接;'類內,並把'$ this->連接= mysql_connect(服務器,UNAME,密碼);'裏面open_connection()。然後,'$ con = $ database-> connection;'現在它給了我「未定義的變量:數據庫」:(( – guitarlass 2012-03-28 08:02:04

+0

)您忘記更改mysql_select_db執行中的連接處理程序嗎?mysqli是標準擴展,您不必手動安裝它,所有的信息可以在這裏找到:http://www.php.net/manual/en/book.mysqli.php – peipst9lker 2012-03-28 08:25:27

0

嗯......好吧,看起來你正在得到一個未定義的錯誤,因爲你在類文件的頂部調用了全局$連接,並且它沒有被賦值。

它看起來像你正在open_connection()方法內建立$連接...你是否在一些你沒有提到的包含文件中建立$連接?

嘗試刪除第一行代碼,也許?

0

「全局$連接」;必須在「open_connection」方法內或使用@ peipst9lker方法

+0

不,我試過你的。沒有運氣。不管怎麼說,還是要謝謝你 – guitarlass 2012-03-28 07:38:15