Victorino
Victorino

Reputation: 1641

Data Base Connection Class with PDO statement

I've just started to learn OOP PHP and i'm trying create class that will do connection to my data base.

The code:

  class DB_CONNECT
    {
    private $host ;
    private $dbName ;
    private $userName ;
    private $password;
    private $db;

    public function __construct($host,$dbName,$userName,$password){

        $this->host = $host;
        $this->dbName = $dbName;
        $this->userName = $userName;
        $this->password = $password;

        try {

             $this->db = new PDO('mysql:host='.$this->host.';dbname='.$this->dbName.';charset=utf8',$this->userName,$this->password);
             $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
             return $this->db;
        } catch (Exception $e) {

            ECHO $e->getMessage();
        }

    }   

}

 $db = new DB_CONNECT("localhost", "oopcms","viktor","viktor");


 function select($db){

    $query = $db->prepare("SELECT * FROM `test`");
    $query->execute();
    $row = $query->fetchAll(PDO::FETCH_ASSOC);
    return $row;
 }

 $x = select($db);
 var_dump($x);

But I am getting this error:

 Fatal error: Call to undefined method DB_CONNECT::prepare();

What I understand is that the PDO object couldn't be created. Can you give some guidance please?

Upvotes: 0

Views: 378

Answers (2)

Victorino
Victorino

Reputation: 1641

who interested here is the solution of this and Pekka and Your Common Sense thank you for a tip:)

 class Select
{
       private $query;
       private $dbh;
       private $row;

public function __construct(){

    $this->dbh =  new DB_CONNECT("localhost", "oopcms","viktor","viktor");



}


public function select(){

    $this->query = $this->dbh->db->prepare("SELECT * FROM `test`");
    $this->query->execute();
    $this->row = $this->query->fetchAll(PDO::FETCH_ASSOC);
    return $this->row;
  }


}

  $sel = new Select();
   $s = $sel->select();
  var_dump($s);

Upvotes: 0

Your Common Sense
Your Common Sense

Reputation: 157839

Learning OOP is not the reason for creating pointless classes.
Unfortunately, you created one. PDO don't need a class to be built on top of it. Just leave it as is.

So, instead of

$db = new DB_CONNECT("localhost", "oopcms","viktor","viktor");

make it

$db = new PDO("localhost", "oopcms","viktor","viktor");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

that would be way clearer and useful

Upvotes: 1

Related Questions