从类内部的匿名函数返回pdo结果

时间:2014-10-07 14:09:53

标签: php function pdo return

我已经创建了一个匿名函数来获取一些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

感谢您的宝贵帮助

1 个答案:

答案 0 :(得分:2)

您的global $query函数中从未select()。这意味着$query中有一个局部变量,一旦函数返回,您的DB结果将被删除/销毁。

另外,使用全局变量简直太可怕了。特别是对此。您可以在任何给定时间限制自己进行 SINGLE 查询。为什么不返回实际结果?

function query($sql) {
    $result = $connextion->execute($sql);
    return $result;
}

$results = query($sql);
while($row = $results->fetch()) {
    ...
}