2016-07-11 9 views
0

これは私だけのものかどうか分かりませんが、includeメソッドを使用しようとすると失敗します。クラスには含まれません。

<?php 
    include_once 'db.php'; 
    class Cookies{ 
     public function Verify($Cookie){ 
      echo($dbh); 
      $CookieStmt = $dbh->prepare("SELECT * FROM Cookies WHERE Cookie=:cookie"); 
      $CookieStmt->bindParam(":cookie",$Cookie); 
      $CookieStmtExe = $CookieStmt->execute(); 
      if($CookieRow=$CookieStmtExe->fetch(PDO::FETCH_ASSOC)){ 
       if($CookieRow['EndDate']>time()){ 
        return true; 
       }else{ 
          return false; 
         } 
         } else{ 
        return false; 
       } 

     } 
} 
     ?> 

私も機能Verifyincludeを試みたが、それは常に出てエコーします:注意:未定義の変数:行のDBH 5

そして、はい、私はdb.php

$dbhを定義しています更新:私も直接接続を試みましたが、まだ失敗しています

$dbh = new PDO('mysql:host=127.0.0.1;dbname=baheeg', 'root', ''); 
class Cookies{ 
    public function Verify($Cookie){ 
     echo($dbh); 
     $CookieStmt = $dbh->prepare("SELECT * FROM Cookies WHERE Cookie=:cookie"); 
     $CookieStmt->bindParam(":cookie",$Cookie); 
     $CookieStmtExe = $CookieStmt->execute(); 
     if($CookieRow=$CookieStmtExe->fetch(PDO::FETCH_ASSOC)){ 
      if($CookieRow['EndDate']>time()){ 
       return true; 
      }else{ 
         return false; 
        } 
        } else{ 
       return false; 
      } 

    } 
} 

答えて

1

問題は可変スコープです。関数の外に変数$dbhを割り当てるので、global宣言を使用しない限り、関数内では使用できません。

<?php 
include_once 'db.php'; 
class Cookies{ 
    public function Verify($Cookie){ 
     global $dbh; 

     echo($dbh); 
     $CookieStmt = $dbh->prepare("SELECT * FROM Cookies WHERE Cookie=:cookie"); 
     $CookieStmt->bindParam(":cookie",$Cookie); 
     $CookieStmtExe = $CookieStmt->execute(); 
     if($CookieRow=$CookieStmtExe->fetch(PDO::FETCH_ASSOC)){ 
      if($CookieRow['EndDate']>time()){ 
       return true; 
      }else{ 
       return false; 
      } 
     } else{ 
      return false; 
     } 
    } 
} 
?> 

また、関数内include文を入れることができますが、それだけであなたが呼び出す最初の関数に含まれることになる、と他の人がそれをスキップしますので、あなたはinclude、ないinclude_onceを使用する必要があります。

関連する問題