我是PDO CLASS编程的新手,这是我的问题,我有这个类从DB中检索一些信息,我真的需要这样的东西,我得到标题上的错误: 在查询行上的非对象上调用成员函数prepare():
$stmt = $this->db->prepare()
我做错了什么?
class map{
private $db;
public $dir;
public $query;
function mapWant($query,$db,$dir){
$stmt = $this->db->prepare("SELECT ".$this->query." WHERE ID = :dir");
$stmt->execute(array(':dir'=>$this->dir));
$row=$stmt->fetch(PDO::FETCH_LAZY);
echo $row[0]; //I want retrive the only field that the result has
}
}
$map = new map();
$map->mapWant($dir,$db,"Breve");
$ dir是$ _GET方法,仅返回一个数字 $ db =是PDO连接(这是工作); 提前谢谢你。
答案 0 :(得分:1)
您将$db
引用作为参数传递,但随后尝试在类的范围内访问它。 $query
和 $dir
也是如此。
您似乎认为传递给方法的任何参数都将作为类属性应用。事实并非如此。
以下一行:
$stmt = $this->db->prepare("SELECT ".$this->query." WHERE ID = :dir");
应该只是:
$stmt = $db->prepare("SELECT ".$query." WHERE ID = :dir");
前提是传递给$db
的{{1}}是有效的数据库资源。