查询函数神秘地中断了


query function breaks mysteriously

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

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行中断。这个查询也是有效的,我已经对它进行了测试。我错过什么了吗?

您的问题是$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);

更多关于变量作用域的信息见手册

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
}

如果$db是一个类变量,那么您需要将其引用为:

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