Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在不同的类中调用我的数据库类_Php_Oop_Pdo - Fatal编程技术网

Php 如何在不同的类中调用我的数据库类

Php 如何在不同的类中调用我的数据库类,php,oop,pdo,Php,Oop,Pdo,我试图学习OOP以及PDO和准备好的语句。我制作了一个数据库类,我相信它非常简单 我有一个posts类,我想回显该数据库中的所有数据,我有一个构造函数方法,我想调用该数据库连接,但我认为我做得不对,可能是做得不对,因为我收到以下错误消息: 注意:未定义的变量:第18行E:\xampp\htdocs\attention\class.Register.php中的pdo 致命错误:对第18行E:\xampp\htdocs\Attention\class.Register.php中的非对象调用成员函数p

我试图学习OOP以及PDO和准备好的语句。我制作了一个数据库类,我相信它非常简单

我有一个posts类,我想回显该数据库中的所有数据,我有一个构造函数方法,我想调用该数据库连接,但我认为我做得不对,可能是做得不对,因为我收到以下错误消息:

注意:未定义的变量:第18行E:\xampp\htdocs\attention\class.Register.php中的pdo

致命错误:对第18行E:\xampp\htdocs\Attention\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();
?>

database.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!';
    }
}
?>

您似乎在调用“Users”类中的方法“viewall”。但是,在您显示的代码中,方法“viewall”是“Posts”类的成员

$run = new Users();
$run->viewall();
此外,您正在设置“pdo”属性,即使它在类中不存在

$pdo = new Database();
$this->pdo = $pdo;
试着改变

class Posts {


您似乎在“Users”类中调用方法“viewall”。但是,在您显示的代码中,方法“viewall”是“Posts”类的成员

$run = new Users();
$run->viewall();
此外,您正在设置“pdo”属性,即使它在类中不存在

$pdo = new Database();
$this->pdo = $pdo;
试着改变

class Posts {


$this->pdo->prepare('SELECT*FROM posts')为什么在类中定义不使用的属性?(
protected$Database;
public$dbo;
)您可能会发现有些帮助。
$this->pdo->prepare('SELECT*FROM posts')为什么在类中定义不使用的属性?(
protected$Database;
public$dbo;
)您可能会觉得有些帮助。