2017-01-23 66 views
-1

我有一個帶有連接功能的DB類,它返回一個新的PDO。具有PDO功能的類/無法調用類中的另一個功能

在另一頁我宣佈$db = DB::connect();並做所有我的計算。

我在主頁上傳遞了一個叫echo DB::startSession($username);的函數。

我現在使用startSession($ username)函數啓動一個pdo並執行查詢。雖然每當我使用類似$connect = self::connect();我得到一個錯誤,同樣與$connect = $this->connect();

所有代碼

public static function connect(){ 

     $dsn = 'mysql:dbname=chatsite;host=127.0.0.1'; 
     $user = 'root'; 
     $password = 'root'; 

     try { 
      $dbh = new PDO($dsn, $user, $password); 
      return $dbh; 
     } catch (PDOException $e) { 
      echo 'Connection failed: ' . $e->getMessage(); 
     } 
    } 



public static function startSession($username){ 

     //return "user: " . $username; 
     $active_check = self::connect(); 
     $active_check->prepare("SELECT * FROM users WHERE username='$username'"); 
     $active_check->execute(); 

     return 'test'; 

而這是其他頁面

echo DB::startSession($username); 

上我得到的錯誤是未捕獲的錯誤:調用未定義的方法PDO :: execute(),這與PDO未在第一行中激活有關。

+0

它不是一個重複的那不是我的問題 – D12L12

+0

'$查詢= $ active_check->準備( 「SELECT * FROM用戶其中username = $用戶名」「); $查詢 - >執行();'? – Rasclatt

+0

[**你的班級將殺死你的數據庫服務器。**](https://phpdelusions.net/pdo/common_mistakes) –

回答

0
$active_check = self::connect(); 
$stmt = $active_check->prepare("SELECT * FROM users WHERE username='$username'"); 
$stmt->execute();