我有一个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行。查询也是有效的,我已经证实了这一点。我错过了什么吗?
答案 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);