我的PDO功能出错

时间:2014-09-30 09:57:39

标签: php mysql pdo

我是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连接(这是工作); 提前谢谢你。

1 个答案:

答案 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}}是有效的数据库资源。