Max Guevara
Max Guevara

Reputation: 1

Error in my PDO function

I'm new to PDO CLASS programming, here's my question, I have this class that retrive some infos from DB and I really need something like that, I get the error on title: Call to a member function prepare() on a non-object on query line:

$stmt = $this->db->prepare()

What I'm doing wrong?

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 is a $_GET method that retrive only a number $db = is PDO connection (that's work); thank you in advance.

Upvotes: 0

Views: 28

Answers (1)

George
George

Reputation: 36784

You are passing the $db reference as a parameter, but then trying to access it within the scope of your class. The same goes for $query and $dir.

You seem to be under the impression that any parameters passed to a method will be applied as class properties. This is not the case.

The following line:

$stmt = $this->db->prepare("SELECT ".$this->query." WHERE ID = :dir");

Should simply be:

$stmt = $db->prepare("SELECT ".$query." WHERE ID = :dir");

Provided that $db passed to $map->mapWant() is a valid database resource.

Upvotes: 1

Related Questions