2015-09-02 62 views
1

我有一個帶有2個函數DB_Connect()和LogIn()的PHP類。要使用LogIn(),我首先需要運行DB_Connect並獲取返回值$ CONN。我這樣做與$this->DB_Connect();但是當我運行代碼,我得到:PHP類 - 在另一個函數中使用返回

Notice: Undefined variable: CONN in C:\XAMPP\htdocs\core\Admin.class.php on line 39

Fatal error: Call to a member function prepare() on null in C:\XAMPP\htdocs\core\Admin.class.php on line 39

protected function DB_Connect() 
{ 
    $ROOT = dirname(__DIR__); 
    include $ROOT."../core/sql.php"; 

    try { 
    $CONN = new PDO("mysql:host=$ServerName; dbname=$DataBase", $Username, $Password); 
    $CONN->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $CONN->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch(PDOException $e) { 
    echo "Connection failed: " . $e->getMessage(); 
    } 

    return $CONN; 
} 

public function LogIn() 
{ 
    if($_SERVER["REQUEST_METHOD"] === "POST") { 
    $Username = $_POST["Username"]; 
    $Password = $_POST["Password"]; 

    $this->DB_Connect(); 

    try { 
     $SQL = "SELECT Password FROM Admins WHERE Username = :Username"; 
     $SQL = $CONN->prepare($SQL); 
     $SQL->execute(array('Username' => $Username)); 
     $CountRows = $SQL->rowCount(); 
     $Result = $SQL->fetch(PDO::FETCH_ASSOC); 
     $PasswordCheck = $Result["Password"]; 
     if($CountRows === "1" && password_verify($Password, $PasswordCheck)) { 
     $_SESSION["LoginUser"] = $Username; 
     $CONN = null; 
     header("location: home.php"); 
     exit(); 
     } else { 
     $Status = '<div class="alert alert-danger" role="alert">You have entered wrong data!</div>'; 
     } 
    } catch(PDOException $e) { 
     echo "Connection failed: " . $e->getMessage(); 
    } 
    } 
    $CONN = null; 
    if(isset($Status)) { 
    return $Status; 
    } 
} 

回答

2

$this->DB_Connect();回報的值。它沒有爲你設置一個變量。您需要將變量設置爲其返回值。

$CONN = $this->DB_Connect(); 
+0

Thang很多工作! –

相關問題