2014-09-11 2 views
0

나는 데이터 테이블을 가지고 있고 그것으로 조작하기위한 pdo 클래스를 만들고 데이터 테이블의 필드를 공개 변수로 바꿔서 어디에서 액세스 할 수 있는지 알고 싶다.mysql 데이터베이스를 PHP에서 pdo 클래스로 바꾼다

Exemple :

<?php 
class personne 
    { 
     //code to get fields from datatable and turn them to variables 
    } 

$p=personne::find(1); //find personne who have 1 as id 
echo $p->nom; 
?> 

변수

감사의 값에 방류 필드의 값입니다. 여기

+0

좋아는 ... 질문이 있습니까? 발생한 문제는 무엇입니까? – Jite

+0

'find'가'personne'의 정적 메소드라면'new'를 사용하지 않을 것입니다. '$ p = new personne :: find (1);'어쨌든 오류가 발생합니다. – Sugar

+0

예 제가 동의합니다 Clément 내가 지금 편집했습니다 –

답변

1

그것이 :

class Person { 

    private static $instance = null; 
    private $db; 
    private static $data; 

    private function __construct() { 
    try { 
     $pdo_param = array(
     PDO::ATTR_ERRMODE    => PDO::ERRMODE_EXCEPTION, 
     PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC 
    ); 
     $this->db = new PDO("mysql:host=YOUR_HOST_NAME;dbname=YOUR_DB_NAME", "YOUR_USERNAME", "YOUR_PASSWORD", $pdo_param); 
    } 
    catch(PDOException $e) { 
     die($e->getMessage()); 
    } 
    } 

    private static function getInstance() { 
    if (self::$instance == null) { 
     self::$instance = new self(); 
    } 
    return self::$instance; 
    } 

    public static function find($id) { 
    try { 
     $instance = self::getInstance(); 
     $result = $instance->db->query(YOUR_SQL_QUERY); 
     self::$data = (object)$result->fetch(); 
     return self::$data; 
    } 
    catch(PDOException $e) { 
     die($e->getMessage()); 
    } 
    } 

} 

$p = Person::find(1); 
echo $p->name; 
+0

죄송합니다. "치명적인 오류가 발생했습니다 :/home에있는 객체 컨텍스트가 아닌 경우 $ this를 사용하십시오. /touhfata/new/p/index.php on line 31 " –

+0

문제를 해결하고 테스트했습니다. 이제는 효과가있다. –

+0

이 작업을 수행하는 방법은 데이터베이스 연결 클래스에서 자주 사용되는 Singleton Design Pattern이라고하며 클래스의 인스턴스가 하나뿐임을 확인합니다. –

관련 문제