Как использовать PDO готовить более одного раза в классе

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;
    }
}

Ошибка использования $this снова для подготовки другого оператора выбора, как я могу использовать его снова для другой функции в том же классе? Благодарю вас

Ценю любую помощь, действительно застрял на этой проблеме

1 ответ

Решение

Привет, вы можете проверить свой код, и я предпочитаю asign, чтобы оценить пример соединения

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

и в вашей функции вы делаете кто-то, как это

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();
        }
    }

в полном примере это:

$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();
}

пожалуйста попробуйте и удачи

Другие вопросы по тегам