2010-01-19 2 views
0

동적 웹 사이트를 만들 때 데이터베이스에 연결하기 위해 PHP 인클루드를 사용합니다. 포함 된 파일은 매우 기본적인 :여러 php/mysql 데이터베이스 연결을 결합하는 방법?

mysql_connect($hostname = 'host', $username = 'user', $password = 'password'); mysql_select_db('database');

이 잘 작동합니다.

일부 장소에서는 AJAX 시스템을 사용하여 동시에 데이터베이스를 업데이트하는 데이터베이스 레코드의 드래그 앤 드롭 순서를 만들었으며 인터넷에서 찾은 내용에 맞게 조정되었습니다. 이것은 또한 좋은 웍

class SortableExample { protected $conn;
protected $user = 'user';
protected $pass = 'password';
protected $dbname = 'database';
protected $host = 'host';
public function __construct() {
$this->conn = mysql_connect($this->host, $this->user, $this->pass);
mysql_select_db($this->dbname,$this->conn);
}

이는 자신의 연결 코드를 사용합니다.

그러나 사용자 이름, 암호, 호스트 및 데이터베이스를 두 개의 개별 파일에 추가해야한다는 것을 의미합니다. 때때로 두 번째 웹 사이트가 잊혀져 웹 사이트가 실패하게됩니다.

제 질문은 어떻게 두 연결 파일을 하나로 결합 할 수 있습니까? 아니면 두 번째 코드 블록을 외부 변수로 받아 들여 한 곳에서 실제 값만 입력하면됩니까?

답변

1

마지막 질문은 쉽습니다.

db.config.php

$host = ''; 
$user = ''; 
$pass = ''; 
$db = ''; 

db.plain.php

include 'db.config.php'; 

$conn = mysql_connect($host, $user, $pass); 
mysql_select_db($db,$conn); 

db.class.php

include 'db.config.php'; 

class SortableExample 
{ 
    protected $conn; 
    public function __construct() 
    { 
    global $host, $user, $pass, $db; 
    $this->conn = mysql_connect($host, $user, $pass); 
    mysql_select_db($db,$this->conn); 
    } 
} 
+0

그 트릭입니다. 나는 내 자신의 시도에서 거의 거기에 있었지만 변수 앞에서 global을 사용하는 것을 잊었다. – AndrewDFrazier

0

데이터베이스 연결 코드를 다른 파일에 저장하고 필요할 때마다 포함시킬 수 있습니다.

+0

내 이미 만들어진 연결이 활동하기 시작하는 얻을 수없는 곳이었다에서 클래스의 생성을 가지고있는 파일입니다. 하지만 Kolky의 대답 덕분에 이제는 작동합니다. – AndrewDFrazier

+0

클래스 함수 내에 코드를 포함 할 수도 있습니다.) – Franz

0

데이터베이스 연결에 대한 단일 진입 점을 만듭니다.

그것에 대해 게으른 인스턴스와 싱글 톤을 사용하여 다음

class ConnectionProvider { 
    protected $conn; 
    protected $user = 'user'; 
    protected $pass = 'password'; 
    protected $dbname = 'database'; 
    protected $host = 'host'; 
    private static $__instance; 

    private function __construct() { 
     $this->conn = mysql_connect($this->host, $this->user, $this->pass); 
     mysql_select_db($this->dbname,$this->conn); 
    } 

    public static function getInstance() { 
     if (self::$__instance == null) { 
      self::$__instance = new ConnectionProvider(); 
     } 
     return self::$__instance; 
    } 

    public function getConnection() { 
     return $this->conn; 
    } 
} 

과, 코드

ConnectionProvider::getInstance()->getConnection(); 

에서 필요할 때마다 연결을 사용할 수 있습니다.

SortableExample 이렇게 될 것이다 : 나는 일반적으로 일을하지만

class SortableExample { 
    protected $conn; 
    public function __construct() { 
     $this->conn = ConnectionProvider::getInstance()->getConnection(); 
    } 
    ... 
} 
+0

이 모양을 좋아하지만 내 웹 사이트에서 내 정상 데이터베이스 연결이라고하는 많은 페이지를 변경해야한다고 생각합니다. 하지만 더 많은 시간이 필요할 때 제대로 살펴볼 것입니다. 왜냐하면 이처럼 더 많은 코드와 내가 만드는 기본 요소를 적게 사용해야한다고 생각하기 때문입니다. – AndrewDFrazier

관련 문제