0

PDO クラスに問題があります。OOP の学習を始めたばかりで、どこを間違えたのかよくわかりません

私のクラスコード:

<?php

class admin
{
  private $host = 'mysql:host=localhost;dbname=db501865';
  private $username = 'root';
  private $password = 'root';
  private $conn;


  public function connect() {
      try {
          $conn = new PDO($this->host, $this->username, $this->password);
      } catch ( PDOException $e ) {
          die( 'Connection failed: ' . $e->getMessage() );
      }
      return $conn;
  }

  public function disconnect( $conn ) {
      $conn = '';
  }


  public function listReal()
    {
        $this ->connect();
        $real = $conn->query('SELECT * FROM `real`');
        echo '<ul>';
        foreach ($real as $row)
        {
            echo'<li><img src="'.$row['image'].'"></li>';
        }
        $real -> closeCursor();
        echo'</ul>';
    }

}
?>

次のコードを実行すると、ブラウザに 500 エラーが表示されます。

$db = new admin;
$db -> listReal();

どこで間違えた?

4

1 に答える 1

1

$this->var_nameメンバー変数に使用する必要があります。
また、すでに接続している場合は接続する必要はありません。

class admin
{
    private $host = 'mysql:host=127.0.0.1;dbname=test';
    private $username = 'root';
    private $password = 'local@pass';
    private $conn;


    public function connect() {
        if($this->conn) return;
        $this->conn = new PDO($this->host, $this->username, $this->password);
        $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    public function disconnect( $conn ) {
        $conn = '';
    }


    public function listReal()
    {
        $this ->connect();
        $real = $this->conn->query('SELECT * FROM `real`');

        echo '<ul>';
        foreach ($real as $row)
        {
            echo'<li><img src="'.$row['user_id'].'"></li>';
        }
        $real -> closeCursor();
        echo'</ul>';
    }

}
try{
    $db = new admin;
    $db -> listReal();
} catch(Exception $e) {
    echo 'error: '.$e->getMessage();
}
于 2012-07-26T19:32:59.247 に答える