2008-09-26 38 views
1

對於我在PHP中進行的新項目,我創建了一個SQLMethods類來連接數據庫並執行查詢。今晚是我真正需要測試的第一個晚上(我寫了一個星期左右的時間並忘了它),並且發生了一個意外的錯誤:當它調用我的ExecuteQuery()函數時,它不會使用數據庫I在構造函數中選擇。PHP類數據庫連接範圍問題

構造:

public function SQLMethods() { 
     $SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword); 

     if (!$SQLConnection) { 
      die('Could not connect: ' . mysql_error()); 
     } 

     mysql_select_db($SQLDB, $SQLConnection); 
    } 

有問題的功能:

public function ExecuteQuery($Query) { 
     mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error()); 
    } 

有誰看到什麼問題可能是什麼?連接在構造函數完成後關閉嗎?

回答

7

,你應該在你的類聲明$的SQLConnection,你應該把它稱爲

$this->SQLConnection 

,而不是簡單的SQLConnection $。

2

$SQLConnectionExecuteQuery方法中不存在。

您可以直接把它作爲一個參數ExecuteQuery,或添加在構造函數中設置和$this->sqlConnection類方法中訪問的sqlConnection類屬性。

1

變量$SQLConnectionExecuteQuery()正試圖使用​​在另一個範圍內創建。 (SQLMethods函數)。

的連接關閉時,PHP腳本完成工作,或者如果你關閉它自己(如果連接的是,劇本內提出)

你應該在ExecuteQuery跳過$SQLConnection變量由php.net說文檔

如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接。