2014-02-26 6 views
0

저는 DB 연결 함수와 구조화 된 추상 데이터베이스 클래스를 가지고 있습니다. PDO 연결 코드를 생성자에 계속 추가해야합니다.함수에서 클래스로 변수를 전달할 수 없습니다.

내 config.php를 내 abstract.class.php에

function dbconnect() 
{ 
      $dbh; // database handler 
      $host = 'localhost'; 
      $user = 'root'; 
      $pass = ''; 
      $dbname = 'test101'; 
      $error; 
       // Set DSN 
       $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname; 
       // Set options 
       $options = array(
        PDO::ATTR_PERSISTENT => true, 
        PDO::ATTR_ERRMODE  => PDO::ERRMODE_EXCEPTION, 
        PDO::ATTR_EMULATE_PREPARES => false 

       ); 
       // Create a new PDO instanace 
       try{ 
        $this->dbh = new PDO($dsn, $this->user, $this->pass, $options); 
       } 
       // Catch any errors 
       catch(PDOException $e){ 
        $this->error = $e->getMessage(); 
       } 

      } 

include_once('config/config.php'); 

class Database { 


      public function __construct() { 
       dbconnect(); //connect to database 

      } 

      public function query($query) { 
       $this->stmt = $this->dbh->prepare($query); 
      } 

} 
$database = New Database(); 

는 config.php 파일에서 나는 dtabase 핸들러 $dbh 및 abstract.class.php I에서이없는 쿼리 함수에서 호출하고 있습니다. 내가 오류 Undefined property: Database::$dbh을 얻고있다

내 질문. config.php에서 abstract.class.php로 어떻게 전달할 수 있습니까? PHP를 사용할 때이 파일을 복사 할 때 파일에있는 내용을 복사하여 붙여 넣는 것과 동일하다고 생각했습니다. config.php의 $dbh을 abstract.class.php로 어떻게 전달할 수 있습니까? 보안 문제와 관련이있는 내 PDO 연결과 관련된 모든 문제에 대해 조언을 구하십시오.

이 함수는 생성자에서 함수를 복사하여 전달하고 데이터베이스 연결 변수를 생성자 외부의 private $dbh;으로 설정했지만이 문제는 모든 필요가 없으면 항상 클래스를 포함해야한다는 사실입니다. 가끔 난 그냥 또한 당신이 $ this-를 호출 데이터베이스 클래스> DBH에서 config.php를

+0

'dbconnect' 함수 내에 정의 된'__construct' 함수는 어떻게 할 것이라고 생각하십니까? – zerkms

+0

@zerkms 죄송합니다. – user3057514

+0

이상의 코드를 복사 할 때 해당 부분을 편집하는 것을 잊어 버렸습니다. 질문이 아직 열려 있습니다. 그들은 단지 2 중첩 된 함수입니다. – zerkms

답변

1

define salt를 추가하고 싶었 데이터베이스에 연결해야 할 수도 있습니다에서 다음 return $dbh, 당신의 dbconnect 기능에 따라서 데이터베이스 클래스 생성자 : $this->dbh = dbconnect();

관련 문제