首页 > 解决方案 > 致命错误:未捕获的错误:调用未定义的方法 Connection::prepare()

问题描述

我想使用 php oop 类创建一个新数据库,我有 Create 2 类,第一个类仅连接到 localhost,第二个类根据连接类“first class”在此 localhost 中创建数据库

class Connection 
{
    public $conn;

    function __construct() {
        try {

            $this->conn = new PDO('mysql:host=127.0.0.1;charset=utf8', 'root', '');
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        } catch (PDOException $e) {

            die($e->getMessage());

        }
        return $this->conn;
    }
}


class CreateNewDataBase
{
    public $connect;
    function __construct()
    {
        $this->connect = new Connection;

        $sql = 'CREATE DATABASE `startex` CHARACTER SET utf8 COLLATE utf8_general_ci';
        $query = $this->connect->prepare($sql);
        $query->execute();  
        if ($query) echo 'Done Your Database Is Created Successfuly';

    }
}

$newObject= new CreateNewDataBase;

输出是

致命错误:未捕获的错误:调用未定义的方法 Connection::prepare()....CreateNewDataBase->__construct() 在我的文件中抛出

标签: phpmysqlsqlooppdo

解决方案


你的Connection类没有prepare方法。

return当您new创建该类的新实例时,构造函数不会返回您在语句中拥有的内容。它用于实例化对象;此时您不是该__construct方法的调用者。

$conn = new Connection;

这是通过引用分配使用new关键字创建的新对象,而不管构造函数中的任何返回语句。

您可以Connection从内部CreateNewDataBase构造函数访问类中的 PDO 连接:

$this->connection->conn

推荐阅读