2011-07-23 14 views
0

は私のコードです:PDOでのクエリのためにPHP PDO接続

<?php 
class DatabaseConnection { 

private $dbname  = "db_01"; 
private $host  = "localhost"; 
private $user  = "xxx"; 
private $password = "xxxxxx"; 
private $port  = 5432; 

private $DBH; 

public function __construct() { 
    try { 
     $this->DBH = new PDO("pgsql:host=$this->host;port=$this->port;dbname=$this->dbname;user=$this->user;password=$this->password"); 
    } catch(PDOException $e) { 
     echo $e->getMessage(); 
    } 

} 
public function disconnect() { 
    $this->DBH = null; 
} 
} 
?> 

私は$ DBH-を使用する必要があります>クエリ( 'SELECT * from user ');

他のクラスの私の接続クラスはどうですか?

<?php 
include "DatabaseConnection.php"; 
class User { 
    private $connection; 

    public function getUser() { 
     $this->connection = new DatabaseConnection(); 
     $STH = $this->connection->query('SELECT * from User'); 
    } 
} 
?> 

しかし、それは動作していません。

どのような体は私を助けることができますか?感謝:)

UPDATE

後従っヨナは、

<?php 

class DatabaseConnection extends PDO { 

private $dbname  = "db_01"; 
private $host  = "localhost"; 
private $user  = "xxx"; 
private $password = "xxxxxxxxx"; 
private $port  = 5432; 

public function __construct() { 
    try { 
     parent::__construct("pgsql:host=$this->host;port=$this->port;dbname=$this->dbname;user=$this->user;password=$this->password"); 
    } catch(PDOException $e) { 
     echo $e->getMessage(); 
    } 

} 
public function disconnect() { 
    $this = null; 
} 
} 
?> 

を示唆して私がメッセージブラウザに "接続がリセットされた" しまった、いただきました!間違っていますか?

+0

エラーメッセージまたは正確に何が失敗するのかの説明を提供できますか?私の推測は、 'DatabaseConnection'クラスに' query'という名前のメソッドが存在しないということです。 – vstm

+0

@vstm:いいえ、何も表示されず、何も得られません。あなたは前にPDOを持っていますか? – Ahmad

+2

何も表示されない場合、最終的にエラーはなく、スクリプトは出力を生成しません。一方、PHPはエラーメッセージを抑制することができます。 'display_errors'が** on **で、' error_reporting'が 'E_ALL | 'に設定されていればphp.iniをチェックインしてください。 E_STRICT 'とする。 'display_errors'がオンでまだ出力がない場合は、' echo "hello world"; 'を追加して、スクリプトが正しく実行されているかどうかを確認してください。 – vstm

答えて

4

これは動作しません。

class DatabaseConnection { 
    // ... 
    public function query($sql) { 
     return $this->DBH->query($sql); 
    } 
    // ... 
} 

を呼び出したり、PDOを呼び出すメソッドを作成する必要があります。

class DatabaseConnection extends PDO { 
    // ... 
} 

更新:一方 、すべてのPDOクラスをラップにはほとんどポイントがあります。 PDOオブジェクトを直接作成するだけではどうですか?

+0

何が最善の方法か、クエリ方法を作成するか、PDO自体を拡張しますか? ありがとう – Ahmad

+0

extend PDOの使用例を表示できますか?ありがとう – Ahmad

+0

@Ahmad:おそらくそれを拡張する方が簡単でしょう。コードの2番目のビットはそれを拡張する例です。あなたの他の方法をその中に入れてください。 – Jonah

3
class User { 
    private $connection; 

    public function __construct ($connection) { 
    $this->connection = $connection; 
    } 

    public function getUser() { 
    $STH = $this->connection->query('SELECT * from User'); 
    } 
} 
+1

私は通常このバリエーションを使用します。タイプヒントで改善することができます。 –

関連する問題