2016-07-07 11 views
2

私はOOPで自分の手を試しています。最近私に親切ではありませんでした。ここに私のクラスは次のとおりです。OOP - 関数が定義されていませんか?

class db { 

protected $host = ""; 
protected $dbname = ""; 
protected $user = ""; 
protected $pass = ""; 

function execute($query, $parameters, $usefetch) { 

    $dsn = "mysql:host=$this->host;dbname=$this->dbname"; 
    $pdo = new PDO($dsn,$this->user,$this->pass); 

    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    try { 
     $statement = $pdo->prepare($query); 
     $statement->execute($parameters); 

     if($usefetch) { 
      $result = $statement->fetchAll(PDO::FETCH_ASSOC); 
      return $result; 
     } else { 
      return SUCCESS; 
     } 
    } 

catch(PDOException $ex) { return $ex; } 

} 

function __get($var) { 
    return $this->$var; 
} 

} 

私はそれを定義し、私はこのエラーを取得し、「実行」関数を呼び出すしようとすると:ここ

Fatal error: Uncaught Error: Call to undefined function execute() in /var/www/html/api/classes/sessions.php:49 Stack trace: #0 /var/www/html/index.php(3): require_once() #1 {main} thrown in /var/www/html/api/classes/sessions.php on line 49

は、私は(デバッグ)、それを呼び出すようにしようとしている方法です

$db = new db(); 
die(var_dump($db.execute("SELECT * FROM sessions", [], true))); 

このエラーが発生する理由はわかりません。それは私のPHPの設定で何かができますか?

何が起こっている
+2

' $ DB-> 'の代わりに' $のdb.'をお試しください – Rasclatt

+0

-___________________________-検索に3時間かかります – Hiyper

+0

時間が無駄です:D – Rasclatt

答えて

2

連結.があります。->が必要です。次のようになります。

$db->execute("SELECT * FROM sessions", [], true) 

の代わりに: `$ DB->(実行...矢田、矢田、yada`:

// This is a typo concatenation OR you may be temporarily confused ;) with 
// a Javascript object which does use the period for object/method 
$db.execute("SELECT * FROM sessions", [], true)) 
0

var_dump()がグローバルスコープで​​関数の出力を文字列$dbを連結するattempingされていることである(それは私が独自の機能ではなく、オブジェクトをdbexecute作る場合でも、実行されません)。

関連する問題