2010-07-10 76 views
1

我很新的PHP,到目前爲止,我一直在使用下面的架構來連接到數據庫服務器,並選擇一個數據庫:如何編輯這個PHP數據庫連接文件?

mysql_connect("host","username","password"); 
mysql_select_db("databaseName"); 

但我現在用的是別人的劇本,它似乎是用面向對象的風格編寫。所以我很擔心如何用我自己的設置編輯連接文件。假設我的主機是「localhost」,則用戶名是「根」,密碼爲「123」,並選擇數據庫「MyDatabase的」我想去的地方,這些在下面的腳本?:

<?php 
/** 
* MySQL Database Connection Class 
* @access public 
* @package SPLIB 
*/ 
class MySQL { 
    /** 
    * MySQL server hostname 
    * @access private 
    * @var string 
    */ 
    var $host; 

    /** 
    * MySQL username 
    * @access private 
    * @var string 
    */ 
    var $dbUser; 

    /** 
    * MySQL user's password 
    * @access private 
    * @var string 
    */ 
    var $dbPass; 

    /** 
    * Name of database to use 
    * @access private 
    * @var string 
    */ 
    var $dbName; 

    /** 
    * MySQL Resource link identifier stored here 
    * @access private 
    * @var string 
    */ 
    var $dbConn; 

    /** 
    * Stores error messages for connection errors 
    * @access private 
    * @var string 
    */ 
    var $connectError; 

    /** 
    * MySQL constructor 
    * @param string host (MySQL server hostname) 
    * @param string dbUser (MySQL User Name) 
    * @param string dbPass (MySQL User Password) 
    * @param string dbName (Database to select) 
    * @access public 
    */ 
    function MySQL ($host,$dbUser,$dbPass,$dbName) { 
     $this->host=$host; 
     $this->dbUser=$dbUser; 
     $this->dbPass=$dbPass; 
     $this->dbName=$dbName; 
     $this->connectToDb(); 
    } 

    /** 
    * Establishes connection to MySQL and selects a database 
    * @return void 
    * @access private 
    */ 
    function connectToDb() { 
     // Make connection to MySQL server 
     if (!$this->dbConn = @mysql_connect($this->host, 
             $this->dbUser, 
             $this->dbPass)) { 
      trigger_error('Could not connect to server'); 
      $this->connectError=true; 
     // Select database 
     } else if ([email protected]_select_db($this->dbName,$this->dbConn)) { 
      trigger_error('Could not select database'); 
      $this->connectError=true; 
     } 
    } 

    /** 
    * Checks for MySQL errors 
    * @return boolean 
    * @access public 
    */ 
    function isError() { 
     if ($this->connectError) 
      return true; 
     $error=mysql_error ($this->dbConn); 
     if (empty ($error)) 
      return false; 
     else 
      return true; 
    } 

    /** 
    * Returns an instance of MySQLResult to fetch rows with 
    * @param $sql string the database query to run 
    * @return MySQLResult 
    * @access public 
    */ 
    function query($sql) { 
     if (!$queryResource=mysql_query($sql,$this->dbConn)) 
      trigger_error ('Query failed: '.mysql_error($this->dbConn). 
          ' SQL: '.$sql); 
     return new MySQLResult($this,$queryResource); 
    } 
} 

/** 
* MySQLResult Data Fetching Class 
* @access public 
* @package SPLIB 
*/ 
class MySQLResult { 
    /** 
    * Instance of MySQL providing database connection 
    * @access private 
    * @var MySQL 
    */ 
    var $mysql; 

    /** 
    * Query resource 
    * @access private 
    * @var resource 
    */ 
    var $query; 

    /** 
    * MySQLResult constructor 
    * @param object mysql (instance of MySQL class) 
    * @param resource query (MySQL query resource) 
    * @access public 
    */ 
    function MySQLResult(& $mysql,$query) { 
     $this->mysql=& $mysql; 
     $this->query=$query; 
    } 

    /** 
    * Fetches a row from the result 
    * @return array 
    * @access public 
    */ 
    function fetch() { 
     if ($row=mysql_fetch_array($this->query,MYSQL_ASSOC)) { 
      return $row; 
     } else if ($this->size() > 0) { 
      mysql_data_seek($this->query,0); 
      return false; 
     } else { 
      return false; 
     } 
    } 

    /** 
    * Returns the number of rows selected 
    * @return int 
    * @access public 
    */ 
    function size() { 
     return mysql_num_rows($this->query); 
    } 

    /** 
    * Returns the ID of the last row inserted 
    * @return int 
    * @access public 
    */ 
    function insertID() { 
     return mysql_insert_id($this->mysql->dbConn); 
    } 

    /** 
    * Checks for MySQL errors 
    * @return boolean 
    * @access public 
    */ 
    function isError() { 
     return $this->mysql->isError(); 
    } 
} 
?> 

回答

1

的設置不在此文件中。檢查一個配置文件,或者可能是一個創建這個對象的文件。

如果沒有配置文件,並且您沒有創建此對象的文件,則需要手動執行此操作。

$dbConnection = new MySQL('localhost', 'root', '123', 'myDatabase'); 

我不認爲這是一個好的做法艱難,如果您創建一個返回此設置的配置文件會更好。

+0

啊笨,我看到有針對它的名稱是不是很直觀的另一個文件。謝謝。 – Jen 2010-07-10 16:00:58

0

你通過這個數據,同時創建MySQL的類的實例:

$db = new MySQL("host", "user", "pass", "name"); 
1

什麼你已經張貼是兩班。部分類的目的是從代碼中提取實際值。因此,您將希望通過創建類的「實例」來連接到數據庫。這可能是這樣的:


$dbConnection = new MySQL('localhost', 'root', '123', 'myDatabase'); 

該步驟之後,你可以做的東西,如:


$result = $dbConnection->query("SELECT * FROM `blah`");