我正在尝试为 CRUD 创建一个查询类,并希望从其他类扩展连接,但我收到一个错误: fatal error :在非对象上调用成员函数prepare()!? 我想念什么?或者只是为了延长它?
这里我的 MYsql_connection 扩展到了 Querys 类。两者是不同的 php 文件。
class Mysql_connection extends Querys
{
protected $dbh = null;
function __construct()
{
try
{
$this->dbh = new PDO('mysql:host=host; dbname=db','user','pass', array(PDO::MYSQL_ATTR_INIT_COMMAND=> 'SET NAMES utf8'));
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}
catch(PDOException $e)
{
$this->dbh = null;
print('Error on connection'.$e->getMessage());
die();
}
}
}
这是一个查询类
class Querys{
function getData()
{
$sql = "SELECT * FROM db";
$result = $dbh->prepare($sql);
$result = execute();
$data = $result->fetch(PDO::FETCH_ASSOC);
return = $data;
}
}
最佳答案
您需要调用
$this->dbh->prepare($sql);
而不是
$dbh->prepare($sql);
您还需要更换
return = $data;
与
return $data;
此外,Mysql_connection extends Querys
是 inheritance 的错误使用。 。 A extends B
表示 A
是 B
的子类型。
使用现实世界的示例,Dog
可能是 Animal
的子类型。因为狗是动物,对吗?所以 Dog extends Animal
是正确的。
但是,连接
不是查询
!
我强烈建议您阅读一些有关继承和面向对象编程的内容。 ;)
关于php - PDO 扩展用于 CRUD 查询和 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695624/