返回PDO结果从里面
问题描述:
类
outisde匿名函数,我创建了一个匿名函数来得到一些SQL的结果,所以我没有把它写每次:返回PDO结果从里面
function select($sql){
global $connexion; // config connection
$query = $connexion->prepare($sql);
$query->execute();
return $query->setFetchMode(PDO::FETCH_OBJ);
}
我创建了一个类来获得从我的DB元信息:
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');
不要UND erstant为什么我得到这个致命的错误:
Fatal error: Call to a member function fetch() on a non-object
感谢您的宝贵帮助
答
你从来没有global $query
您select()
函数中。这意味着$query
中存在一个局部变量,并且一旦函数返回,您的数据库结果将被丢弃/销毁。
另外,使用全局变量是非常可怕的。特别是对此。在任何给定时间,您都将自己限制为在航班上查询SINGLE。为什么不返回实际结果呢?
function query($sql) {
$result = $connextion->execute($sql);
return $result;
}
$results = query($sql);
while($row = $results->fetch()) {
...
}
+0
真的!很多... – raphaman 2014-10-07 14:22:27
这使我的眼睛受伤。如果你打算在任何地方使用全局,你可能只需通过静态函数或单例访问你的数据库。至少这将是可读的 – Steve 2014-10-07 14:17:42