我收到此错误。 未定义的变量:第15行的C:\ xampp \ htdocs \ Wishlist \ BookDao.php中的db_conn
<?php
require_once ('Book.php');
require_once ('DBConn.php');
class BookDao {
private $db_conn;
function __construct() {
$db_conn=new DBConn();
}
public function addBook(Book & $book) {
//if (isbnAvailable($book -> getIsbn())) {
$db_conn->connect();
$db_conn -> setQuery("Insert into books(ISBN, Title, Author)
Values('$book->getIsbn()','$book->getTitle()','$book->getAuthor()')");
$db_conn -> executeQuery();
$db_conn -> close();
if (mysqli_num_rows($db_conn -> getResult())) {
$db_conn -> freeResult();
return true;
} else {
$db_conn -> freeResult();
return false;
}
}
public function isbnAvailable($isbn) {
$db_conn -> connect();
$db_conn -> setQuery("Select isbn from books where ISBN = ' . $isbn . '");
$db_conn -> executeQuery();
$db_conn -> close();
if (mysqli_num_rows($db_conn -> getResult())) {
$db_conn -> freeResult();
return false;
} else {
$db_conn -> freeResult();
return true;
}
}
}
?>
这似乎是一个范围问题,但我不确定,我也是PHP的新手,所以很可能是一个愚蠢的错误。
答案 0 :(得分:2)
在PHP中,需要通过$this
访问成员。因此,只需将$db_conn
更改为$this->db_conn
即可。
答案 1 :(得分:2)
您在课堂上下文中。要设置和访问您的私有类变量$db_conn
,您需要在任何地方使用$this->db_conn
。
在你的构造函数中:
function __construct() {
$this->db_conn=new DBConn();
}
在所有其他方法中:
public function addBook(Book & $book) {
$this->db_conn->connect();
...
public function isbnAvailable($isbn) {
$this->db_conn->connect();
...
有关PHP类和属性的更多信息:
http://www.php.net/manual/en/language.oop5.basic.php http://www.php.net/manual/en/language.oop5.properties.php
答案 2 :(得分:0)
使用$this->db_conn
php类需要在所有类范围的变量之前使用$ this。
答案 3 :(得分:0)
在定义之后,您需要将此变量用作$this->db_conn
:)
答案 4 :(得分:0)
$ db_conn不是全局的,它作为类变量存在,所以你必须这样引用它。
$ db_conn的所有实例都应该是$ this-&gt; db_conn