查询功能神秘地破解

时间:2013-01-05 16:07:50

标签: php mysql

我有一个Database类,它有多个函数来执行查询。其中一个是最简单的:

public function query($query) {
    return $this->_link->query($query);
}

$ this-> _link->查询在其他情况下有效,所以它应该在这里工作。从具有类实例的文件中,我这样做:

function createLineChart() {

    $query = "select * from tags";
    $result = $db->query($query);

    // do something with result
}

createLineChart();

但它打破了$ result行。查询也是有效的,我已经证实了这一点。我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

function createLineChart() {
    var_dump($db);
    // this should probably return 'undefined'
    global $db;
    // so globalize it!
    $query = "select * from tags";
    $result = $db->query($query);
    // do something with result
}

答案 1 :(得分:2)

您的问题$db超出了createLineChart()功能的范围。您可以使用全局方法:

function createLineChart() {
    global $db; // <-- make the db var become available
    $query = "select * from tags";
    $result = $db->query($query);

    // do something with result
}

或者将$db对象作为参数传递给函数:

function createLineChart($db) {

    $query = "select * from tags";
    $result = $db->query($query);

    // do something with result
}

createLineChart($db);

有关Variable Scope on the Manual的更多信息。

答案 2 :(得分:1)

如果$db是类变量,则需要将其引用为:

$result = $this->db->query($query);