PDO:调用未定义的方法 DB::query()

rit*_*tch 5 php mysql pdo

试图掌握 PDO,但目前没有太多乐趣。我敢打赌这也非常简单。

编辑:执行此操作的更好方法是什么?即而不是把它包装在一个类中?

类/DB.class.php:

<?php

// DB.class.php

class DB {

    protected $db_name = "PDO";
    protected $db_user = "root";
    protected $db_pass = "root";
    protected $db_host = "localhost";

    // Establish Connection to Database.

    public function connect() {

        try {
            $DB = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
        }
        catch (PDOException $e) {
            echo $e->getMessage();
        }

    }

}

?>
Run Code Online (Sandbox Code Playgroud)

包括/global.inc.php:

<?php

require_once 'classes/DB.class.php';

// Establish Connection to Database.

$db = new DB();
$db->connect();

?>
Run Code Online (Sandbox Code Playgroud)

索引.php:

<?php

require_once 'includes/global.inc.php';

$STH = $db->query("SELECT * FROM users");
echo "<pre>";
print_r($STH->fetch());

?>
Run Code Online (Sandbox Code Playgroud)

Tom*_*zyk 5

您的数据库类中没有数据库属性和query()方法。像这样添加它:

class DB
    {
    protected $db_name = "PDO";
    protected $db_user = "root";
    protected $db_pass = "root";
    protected $db_host = "localhost";
    protected $DB = null;

    // Establish Connection to Database.
    public function connect()
        {
        try
            {
            $this->DB = new PDO("mysql:host=".$this->db_host.";dbname=".$this->db_name."", $this->db_user, $this->db_pass);
            } 
        catch(PDOException $e)
            {
            echo $e->getMessage();
            }
        }

    public function query()
        {
        return $this->DB->query();
        }
    }
Run Code Online (Sandbox Code Playgroud)

更好的方法是使用一些 ORM 库或裸 PDO 对象 - 它非常友好。