2010-07-10 3 views
1

지금까지 내가 데이터베이스 서버에 연결하고 데이터베이스를 선택하려면 다음 스키마를 사용하고, PHP에 아주 새로운 오전 : 지금은 어떤 한 사람의 스크립트를 사용하고이 PHP 데이터베이스 연결 파일을 편집하는 방법은 무엇입니까?

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

을하지만 것 같다 객체 지향 스타일로 작성되었습니다. 그래서 나는 자신의 설정으로 연결 파일을 편집하는 방법을 놓치고 있습니다. 내 호스트를 가정하면, 사용자 이름이 "루트", 비밀번호는 "123"입니다 "localhost"를, 그리고 선택할 수있는 데이터베이스는 내가 다음 스크립트?

<?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

설정은 이러한 장소 것 "MYDATABASE"입니다 이 파일에는 없습니다. 구성 파일 또는이 오브젝트를 작성하는 파일을 점검하십시오.

구성 파일이없고이 개체를 만드는 파일이없는 경우 수동으로해야합니다.

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

힘든 연습이 아니라고 생각합니다.이 설정을 반환하는 구성 파일을 만드는 것이 좋습니다.

+0

아 바보 : 당신은 같은 물건을 할 수 있고, 그 단계를 수행 한 후

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

: 그건처럼 보일 수 있습니다. 감사. – Jen

0

당신은 MySQL의 클래스 인스턴스를 생성하는 동안이 데이터를 전달 : 당신이 게시 한 것은 두 클래스입니다

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

. 클래스의 목적 중 일부는 코드에서 실제 값을 추상화하는 것입니다. 따라서 클래스의 "인스턴스"를 만들어 데이터베이스에 연결하려고합니다. 나는 매우 직관적 아니었다 이름이있는 것을 또 다른 파일이 참조 나


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