PHP中的未定义变量,在明确定义之后

时间:2013-12-06 16:41:22

标签: php variables scope undefined

我收到此错误。 未定义的变量:第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的新手,所以很可能是一个愚蠢的错误。

5 个答案:

答案 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