我已经创建了一个匿名函数来获取一些sql结果,所以我不必每次都写它:
function select($sql){
global $connexion; // config connection
$query = $connexion->prepare($sql);
$query->execute();
return $query->setFetchMode(PDO::FETCH_OBJ);
}
我已经创建了一个类来从我的数据库中获取元信息:
class PageInfo {
public function get_meta($page_name){
$sql = "SELECT description, keywords FROM pages WHERE titre='$page_name'";
select($sql); //call the first function
global $query;
while( $results = $query->fetch() ){
echo "test";
}
}
}
然后我就这样打电话给那个班:
$PageInfo = new PageInfo();
$PageInfo->get_meta('homepage');
不明白为什么我会得到这个致命的错误:
Fatal error: Call to a member function fetch() on a non-object
感谢您的宝贵帮助
答案 0 :(得分:2)
您的global $query
函数中从未select()
。这意味着$query
中有一个局部变量,一旦函数返回,您的DB结果将被删除/销毁。
另外,使用全局变量简直太可怕了。特别是对此。您可以在任何给定时间限制自己进行 SINGLE 查询。为什么不返回实际结果?
function query($sql) {
$result = $connextion->execute($sql);
return $result;
}
$results = query($sql);
while($row = $results->fetch()) {
...
}