Search code examples
phpmysqlpdothisprepare

How to use PDO prepare more than oncee in a class


class dbConnection {

    function connect(){
        try{
            $this->db_conn = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass);
            return $this->db_conn;
        } catch(PDOException $e) {
            return $e->getMessage();
        }
    }
}

class student{
    public $link;

    public function __construct(){
        $db_connection = new dbConnection();
        $this->link = $db_connection->connect();
        return $this->link;
    }

    public function checkLogin($username,$password){
        $query = $this->link->prepare("SELECT * FROM studentprofiles where UserName = :uname AND LogPassword = (select md5(:upassword));");
        $query->execute(array(':uname' => $username, ':upassword' => $password));
        $count = $query->rowCount();
        if($count === 1){
            $this->setSession($username);
        }
        return $count;
        $query = null;
    }

    public static function display(){
        $query = $this->link->prepare("SELECT ForeName, Surname FROM studentprofiles where UserName = :uname;"); //getting error here: Fatal error: Using $this when not in object context
        $query->execute(array(':uname' => self::getSession()));
        while($row = $query->fetch(PDO::FETCH_ASSOC)) {
            printf (" <span id='WelcomeName'> Welcome: %s %s\n </span>",$row[0],$row[1]);
        }
        $query = null;
    }
}

Error using $this again to prepare another select statement, how do I use it again for another function in the same class? Thank You

Appreciate any help, really stuck on this problem


Solution

  • hi you can check you code and i prefer asign in to value the conection example

     $conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
    

    and in your function you make some one how this

    function connect(){
            try{
                $conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
                $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
                return $conn;
            } catch(PDOException $e) {
                return $e->getMessage();
            }
        }
    

    in a complete example this:

    $id = 5;
    try {
        $conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    
    
        $stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id');
        $stmt->execute(array('id' => $id));
    
        while($row = $stmt->fetch()) {
            print_r($row);
        }
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }
    

    please try and good luck