2016-01-07 2 views
-1
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 для подготовки другого оператора выбора, как его использовать снова для другой функции в том же классе? СпасибоКак использовать PDO готовить более одного раза в классе

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

+0

Какое повторение последнего утверждения должно означать? –

+0

Какая ошибка вы получаете? – Barmar

+0

Если вы используете 'PDO :: FETCH_ASSOC', вам нужно использовать' $ row ['ForeName'] 'и' $ row ['Surname'] 'для доступа к элементам строки. Если вы хотите использовать '$ row [0]', вы должны использовать 'PDO :: FETCH_NUM'. – Barmar

ответ

0

привет вы можете проверить вам код и я предпочитаю Asign, чтобы значение по CONECTION пример

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

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