PHP在类中调用databaseclass
我对课程和PDO非常陌生。 我在谷歌上搜索了好几个小时,想找到一个可能很容易解决的问题的解决方案 事情是这样的。我已经创建了一个类来连接到我的数据库。 然后,我创建了一个类,使用查询从数据库加载信息。 然后,我使用一个脚本来组合这两个类。 尽管如此,即使我连接到数据库,在我的另一堂课上,它仍然难以理解它。 我不断发现错误: 未定义变量:db 尝试获取中非对象的属性 对中的非对象调用成员函数prepare() 关于发票类中我的$query=$db->conn->prepare语句的所有内容 我怎样才能解决这个问题 我有以下数据库类:PHP在类中调用databaseclass,php,mysql,class,pdo,Php,Mysql,Class,Pdo,我对课程和PDO非常陌生。 我在谷歌上搜索了好几个小时,想找到一个可能很容易解决的问题的解决方案 事情是这样的。我已经创建了一个类来连接到我的数据库。 然后,我创建了一个类,使用查询从数据库加载信息。 然后,我使用一个脚本来组合这两个类。 尽管如此,即使我连接到数据库,在我的另一堂课上,它仍然难以理解它。 我不断发现错误: 未定义变量:db 尝试获取中非对象的属性 对中的非对象调用成员函数prepare() 关于发票类中我的$query=$db->conn->prepare语句的所有内容 我怎样
class database
{
private $host;
private $dbname;
private $username;
private $password;
public $conn;
public function __construct($host,$db,$name,$pass)
{
$this->host=$host;
$this->dbname=$db;
$this->username=$name;
$this->password=$pass;
$dsn = 'mysql:'.$this->dbname.';'.$this->host;
try {
$this->conn = new PDO($dsn, $this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo"connection made";
} catch (PDOException $e) {
echo"Could not connect to the database";
die;
}
}
}
?>
然后,有一个从数据库构建信息的类(invoice类)
我用以下基本脚本打开它:
<?php
include('database.php'); //open database class
$host="localhost";
$db="dbname";
$name="root";
$pass="";
$db = new database($host,$db,$name,$pass);
include('InvoiceBuilderClass.php'); //include invoice class
$invoice = new Invoice();
$cusID="1";
$invoice->set_customer($cusID);
?>
$db
在类的主体中不可见。您应该将其作为参数传递(即传递给Invoice
构造函数,或使用global
)
熟悉PHP中的变量作用域()
// (...)
var $customerPostalCode;
var $customerCountry;
var $db;
然后,需要向类“Invoice”添加构造函数,并将数据库实例传递给该类:
public function __construct($db)
{
$this->db = $db;
}
在类的其他“方法”(函数)中,您需要像这样访问这个成员变量
$this->db->conn->prepare('...');
在“基本脚本”中,只需将类“数据库”的实例传递给类“发票”:
你从来没有给你的发票一个$db的实例。它将如何使用$db?是的,我认为这是一个问题,不知道如何解决它。我最终用“全局$db”修复了它就在查询之前。这似乎很有效。非常好的解决方案!感谢您的回复。我通过在函数中添加一个全局$db来修复它,但我想这个解决方案要好得多!感谢您提供的文档。我知道一两个abotu变量,但这个文档让人大开眼界。Thnx:)
$this->db->conn->prepare('...');
$invoice = new Invoice($db);