2017-07-09 19 views
0

クラス外でPDO接続を行うことができません。ブラウザに500のエラーが表示されます。私はアウトクラスでPDOコードを書いています。私はグローバルな変更を行っていますが、そうではありません。PHPクラス外のpdo接続が失敗する

try { 
    $pas = new PDO('mysql:host=localhost; dbname=tets', 'root', '123'); 
    $pas->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $pas->exec("SET CHARACTER SET utf8"); // return all sql requests as UTF-8 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 
/** 
User Avatar Check 
**/ 
class Usercheck 
{ 
    public $sql , $paso; 


    public function __construct() 
    { 
     global $pas; 
     $this->paso =& $pas; 
    } 

    public function smf_members($whatid) 
    { 

     $this->sql = $this->paso->query("SELECT * FROM smf_members WHERE id_member = $whatid");   
    } 

    public function fetchcheck(){ 
     if ($this->sql) { 
      return $this->sql->fetch(PDO::FETCH_BOTH); 
     } 
    } 
} 

$memberuser = new Usercheck(); 
$memberuser->smf_members('1'); 
+1

私はそれがあなたの答えになると思いますが、どんなエラーが起こりますか?また、サイドノートとして、これらのグローバルを避け、依存関係としてPDOオブジェクトを直接渡します。 –

+0

どのように私は中毒になることができますか? –

+0

中毒の意味は? –

答えて

0

$ globalを使用することはおすすめできません。あなたがしたいことを達成するための多くのソリューションがあります、そして、私のアプローチです。

1)PDO接続を処理する接続クラスを作成します。

use PDO; 
/** 
* PDO Connection Classes 
* Used by Database wrapper class to ensure that there is only one connection 
*/ 
class Connection 
{ 
    private $dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME. ';charset=' . DB_CHARSET; 
    private $conn; 
    private $error; 

    public function __construct() 
    { 
     try 
     { 
      $this->conn = new PDO($this->dsn, DB_USER, DB_PASSWORD); 
     } 
     catch(PDOException $e) 
     { 
      $this->error = $e->getMessage(); 
     } 
    } 

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

} 

2)()あなたのラッパークラスの__constructによりPDO接続を確立し、__construct()も一つだけPDO接続がインスタンス化されていることを確認してください。

use PDO; 
class UserCheck 
{ 
    private $conn; 
    private $db; 

    public function __construct() 
    { 
     if (!$this->db) { 
      $conn = new Connection(); 
      $this->db = $conn->getConnection(); 
     } 
    } 
} 

私は非常にあなたがPDO、多くのベストプラクティスのヒントを使用する方法についてこのPDO tutorialを読むことをお勧めしています。

関連する問題