我正在尝试学习OOP以及PDO和准备好的语句。我做了一个数据库类,我相信这很简单。
我有一个帖子类,我想要回显这个数据库中的所有数据,我有一个构造函数方法,我想调用数据库连接然而我相信我做错了,可能会以错误的方式进行因为我收到以下错误消息:
注意:未定义的变量:第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();
?>
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!';
}
}
?>
答案 0 :(得分:1)
您似乎在“用户”类中调用方法“viewall”。但是在代码中你已经显示方法'viewall'是'Posts'类的成员。
$run = new Users();
$run->viewall();
此外,您正在设置'pdo'属性,即使它在类中不存在。
$pdo = new Database();
$this->pdo = $pdo;
尝试更改
class Posts {
到
class Users {
和
protected $Database;
到
protected $pdo;