2017-06-09 1 views
0

Je rencontre un problème et je ne vois pas pourquoi cela ne fonctionne pas. C'est probablement simple.PHP pass Objet PDO à la classe

Je passe un objet PDO à une classe dans le même fichier et je suis en train d'utiliser cet objet PDO pour effectuer une requête, mais je reçois l'erreur

Fatal error: Call to a member function prepare() on null

suivante Voici mon code que je pense devraient travailler

try{ 
    $pdo = new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS); 
} 
catch (PDOexception $e) { 
    // get the error message 
    $message = 'Connection failed: ' . $e->getMessage(); 
} 

$test= new Test($pdo); 

var_dump($test->get_users()); 

class Test{ 

    private $pdo; 

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

    public function get_users() { 

     $sql = "SELECT 
        user.*, 
        user_role.role AS role 
       FROM user 
        LEFT JOIN user_role ON 
         user.role_id = user_role.id;"; 

     $stmt = $this->pdo->prepare($sql); 
     $stmt->execute(); 

     $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
    } 
} 

Toute idée de ce qui cause l'erreur

Répondre

1

Il est une faute de frappe, vous avez saisi __contruct au lieu de __construct. Il y avait un s manquant.

+0

ouais Tobias a raison! Je voudrais également taper l'objet PDO dans le constructeur comme '__construct (PDO $ pdo)' pour une meilleure complétion du code et la sécurité du type – Stoffo

+0

Plus vous le regardez, plus vous ne voyez d'erreurs;) –