php - 致命错误:未捕获的错误:调用未定义的方法 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() 在我的文件中抛出
解决方案
你的Connection
类没有prepare
方法。
return
当您new
创建该类的新实例时,构造函数不会返回您在语句中拥有的内容。它用于实例化对象;此时您不是该__construct
方法的调用者。
$conn = new Connection;
这是通过引用分配使用new
关键字创建的新对象,而不管构造函数中的任何返回语句。
您可以Connection
从内部CreateNewDataBase
构造函数访问类中的 PDO 连接:
$this->connection->conn
推荐阅读
- excel - VB:加载类型库/DLL 时出错。(来自 HRESULT 的异常:0x80029C4A(TYPE_E_CANTLOADLIBRARY)
- content-management-system - Magnolia CMS - 集成第三方系统
- r - 如何在 R 中一次一行应用公式 - 第 2 行的值来自第 1 行的计算值
- python - 计算一列值之间的相关性
- javascript - 如何将附加在formData中的blob发送到php
- ruby-on-rails - 骆驼化到字符串的某个部分
- mysql - 应用程序在生产中运行时更改 mysql 存储引擎的后果
- haskell - 如何在我的游戏中增加更多复杂性?
- poco-libraries - 如何使用 POCO 库和 OAuth2 发送 Get 和 Post 请求
- java - 如何锁定两个完整的 Hazelcast 地图?