2010-09-28 77 views
0

我有一個數據庫類:擴展數據庫類

<?php 

class dbConnect 
{ 
    var $strHost = ""; 
    var $strDatabase = ""; 
    var $strUser = ""; 
    var $strPassword = ""; 

    var $intLinkID = 0; 
    var $intQueryID = 0; 
    var $arrRecord = array(); 
    var $intRow; 

    var $intErrno = 0; 
    var $strError = ""; 

    function dbConnect() 
    { 
     $this->Connect(); 
    } 

    function dbHalt($strError) 
    { 
     $objError = new errorHandle(); 

     $objError->reportError("Database error: $strError", false); 
     $this->intErrno = mysql_errno($this->intLinkID); 
     $this->strError = mysql_error($this->intLinkID); 

     $strError = sprintf("MySQL Error: %s (%s)", $this->intErrno, $this->strError); 

     $objError->reportError($strError, true); 
    } 

    function Connect() 
    { 
     if (0 == $this->intLinkID) { 

      $this->intLinkID = mysql_connect($this->strHost, $this->strUser, $this->strPassword); 
      if (!mysql_select_db($this->strDatabase, $this->intLinkID)) { 
       $this->dbHalt("cannot use database " . $this->strDatabase); 
      } 

     } 

     if (!$this->intLinkID) { 
      $this->dbHalt("Database connection failed"); 
     } 


    } 
} 

class dbMain extends dbConnect 
{ 
// Database connection settings. 

// Dev server. 
    var $strHost = 'db_host_here'; 
    var $strUser = 'db_User_here'; 
    var $strPassword = 'db_password_here'; 
    var $strDatabase = 'db_name_here'; 
} 

此呼籲$objDB = new dbMain();

但我要的是動態設置數據庫的詳細信息在其他類(主CMS)時,工作正常例如:

$objDB = new dbMain($user, $pass, $dbname, $dbhost); 
+0

爲清楚起見,您應該聲明access修飾符爲private而不是var。 var關鍵字不再需要。它將在PHP5中工作,但會在PHP5中引發5.3版本的E_STRICT警告,因爲它已被棄用。 – coolkid 2010-09-28 13:55:55

回答

0

使用類構造函數。傳入值。

class dbMain 
{ 
    function __construct($strHost='db_host_here',$strUser='db_User_here',$strPassword='db_password_here',$strDatabase='db_name_here'){ 
     $this->strHost = $strHost; 
     $this->strUser = $strUser; 
     $this->strPassword = $strPassword; 
     $this->strDatabase = $strDatabase; 
    } 
} 
+0

你能舉個例子嗎? – GazHopkins 2010-09-28 11:18:07

+0

class dbDynamic extends dbConnect 函數__construct($ strHost ='localhost',$ strUser ='user',$ strPassword ='password',$ strDatabase ='database'){ $ this-> strHost = $ strHost; $ this-> strUser = $ strUser; $ this-> strPassword = $ strPassword; $ this-> strDatabase = $ strDatabase; } } – GazHopkins 2010-09-28 11:33:21

+0

以上帶來mysql_connect無效鏈接資源的錯誤? – GazHopkins 2010-09-28 11:34:30