1

PDOと準備されたステートメントとともにOOPを学ぼうとしています。私は非常に単純であると信じているデータベースクラスを作成しました。

Posts クラスがあり、このデータベースのすべてのデータをエコーし​​たい、データベース接続を呼び出したいコンストラクター メソッドがありますが、これは間違っていると思いますが、おそらく間違った方法で行っていると思います次のエラー メッセージが表示されます。

注意: 未定義の変数: 18 行目の E:\xampp\htdocs\attendance\class.Register.php の pdo

致命的なエラー: 18 行目の E:\xampp\htdocs\attendance\class.Register.php の非オブジェクトに対するメンバー関数 prepare() の呼び出し

データベースを正しく呼び出す方法についてのアイデア

posts.php

<?php
require 'database.php';

class Posts {

protected $Database;

     public function __construct() {
 $pdo = new Database();
     $this->pdo = $pdo;
        }

public function viewall() {

    $stmt = $pdo->prepare('SELECT * FROM posts');
    $stmt->execute();
    $stmt->fetch(); 
    }
}
$run = new Users();
$run->viewall();
?>

データベース.php

<?php

class Database {
    public $dbo;

    public function __construct() {
        // Connection information
        $host   = 'localhost';
        $dbname = 'testdb';
        $user   = 'root';
        $pass   = '';

        // Attempt DB connection
        try
        {
            $this->pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
            $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            //echo 'Successfully connected to the database!';
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();
        }
        
    }
    
     public function __destruct()
    {
        // Disconnect from DB
        $this->pdo = null;
        //echo 'Successfully disconnected from the database!';
    }
}
?>
4

1 に答える 1

1

「Users」クラス内で「viewall」メソッドを呼び出しているようです。ただし、表示したコードでは、メソッド「viewall」は「Posts」クラスのメンバーです。

$run = new Users();
$run->viewall();

また、クラス内に存在しない場合でも、「pdo」プロパティを設定しています。

$pdo = new Database();
$this->pdo = $pdo;

変更してみる

class Posts {

class Users {

protected $Database;

protected $pdo;
于 2013-09-17T15:38:56.103 に答える