2016-12-26 1 views
2

Ich folgte einem Video und doppelte Überprüfung aller Code und alles scheint gleich zu sein, aber ich bekomme diese Fehler.Undefinierte Variable: PDO, Aufruf an eine Member-Funktion Prepare() auf null

Errors:

Hinweis: Nicht definierte Variable: gU QueryBuilder.php auf Leitung 14

Fatal error: Aufruf an eine Elementfunktion herzustellen() auf null in QueryBuilder.php on 14 Linie

QueryBuilder.php:

class QueryBuilder 
{ 
    protected $pdo; 

    public function __construct($pdo) 
    { 
     $this->pdo = $pdo; 
    } 

    public function selectAll($table) 
    { 
     $query = $pdo->prepare("SELECT * FROM `$table`"); // --> LINE 14 <-- 
     $query->execute(); 
     return $query->fetchAll(); 
    } 
} 

Connection.php:

class Connection 
{ 
    public static function make() 
    { 
     $servername = "localhost"; 
     $dbUsername = "root"; 
     $dbPassword = ""; 
     $dbName = "test"; 

     try { 
      $pdo = new PDO("mysql:host=$servername;dbname=$dbName", $dbUsername, $dbPassword); 
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
      return $pdo; 
     } 
     catch(PDOException $e){ 
      die($e->getMessage()); 
     } 
    } 
} 

init.php:

require "database/Connection.php"; 
require "database/QueryBuilder.php"; 
require "app/Product.php"; 

$query = new QueryBuilder(Connection::make()); 
+0

'$ table', die definiert werden muss; es ist eine Variable. –

+0

@ Fred-ii- Ich mache es in index.php, etwas wie - '$ products = $ query-> selectAll (" products ");' – Rudolph

+0

Versuchen Sie '$ query = $ this-> pdo-> prepare' –

Antwort

2

Wie in den Kommentaren erwähnt, in OOP, müssen Sie $this->pdo verwenden, um die Eigenschaft des Objekts vorbei für sie, anstelle der Variable $query = $pdo-> seit Sie es konstruierten:

public function __construct($pdo) 
{ 
    $this->pdo = $pdo; 
    ^^^^^^^^^^ 
} 

d.h .:

$query = $this->pdo->prepare 
Verwandte Themen