致命错误:未捕获的错误:调用未定义的方法 Connection::prepare() [重复]
Posted
技术标签:
【中文标题】致命错误:未捕获的错误:调用未定义的方法 Connection::prepare() [重复]【英文标题】:Fatal error: Uncaught Error: Call to undefined method Connection::prepare() [duplicate] 【发布时间】:2020-02-23 04:31:32 【问题描述】:我想使用 php oop 类创建一个新数据库,我创建了 2 个类,第一个类仅连接到本地主机,第二个类根据连接类“第一类”在此本地主机中创建数据库
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() 在我的 文件浴
【问题讨论】:
你不能从构造函数返回一个值,但它仍然应该设置$conn
值,因为它是公共的,你可以使用$this->connect->conn->prepare($sql);
【参考方案1】:
您的Connection
类没有prepare
方法。
当您new
创建该类的新实例时,构造函数不会返回您在return
语句中的内容。它用于实例化对象;此时您不是__construct
方法的调用者。
$conn = new Connection;
这是通过引用分配使用new
关键字创建的新对象,而不管构造函数中的任何返回语句。
您可以从 CreateNewDataBase
构造函数内部访问 Connection
类中的 PDO 连接:
$this->connection->conn
【讨论】:
以上是关于致命错误:未捕获的错误:调用未定义的方法 Connection::prepare() [重复]的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:未捕获的错误:调用未定义的方法 Connection::prepare() [重复]
Woocommerce 出现致命错误:未捕获的错误:调用未定义的方法 WooCommerce::get_image_size()
致命错误:未捕获错误:调用未定义函数 is_product()
致命错误:未捕获的错误:调用 /homepages/ 中未定义的函数 mysql_pconnect() [重复]