저는 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를
'dbconnect' 함수 내에 정의 된'__construct' 함수는 어떻게 할 것이라고 생각하십니까? – zerkms
@zerkms 죄송합니다. – user3057514
이상의 코드를 복사 할 때 해당 부분을 편집하는 것을 잊어 버렸습니다. 질문이 아직 열려 있습니다. 그들은 단지 2 중첩 된 함수입니다. – zerkms