我是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连接(这就是工作);提前谢谢。
您将$db
引用作为参数传递,但随后尝试在类的范围内访问它。$query
和$dir
也是如此。
您似乎认为传递给方法的任何参数都将作为类属性应用。事实并非如此。
以下行:
$stmt = $this->db->prepare("SELECT ".$this->query." WHERE ID = :dir");
应该是:
$stmt = $db->prepare("SELECT ".$query." WHERE ID = :dir");
假设传递给$map->mapWant()
的$db
是有效的数据库资源。