Connexion de base de données avec PDO et classe Singleton

Je suis en train d'établir une connexion de base de données avec PDO et une classe Singleton, mais je vais avoir de la difficulté à extraire des données de la base de données.

J'ai lu sur ce sujet, mais je ne suis toujours pas sûr de savoir comment appeler le Singelton classe dans mon fichier de base de données à partir d'un autre fichier et obtenir les résultats imprimés.
L'erreur que je reçois à l'instant est Fatal error: Call to undefined function query() dans mon db.php fichier, qui est le dernier de la fonction dans mon fichier de base de données. Cependant, je crois que la fonction est définie.

Toute aide est très appréciée!

Voici ma base de données (db.php) le fichier de connexion:

<?php
class Database 
{
    private $_db;
    static $_instance;

    private function __construct() {
        $this->_db = new PDO('mysql:host=localhost;dbname=mvcuser', 'root', '');
        $this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    private function __clone(){}

    public static function getInstance() {
        if (!(self::$_instance instanceof self)) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    public function query($sql) {
        return query($this->_db,$sql);
    }

}

Et voici le code de mon index.php fichier:

<?php
    require_once 'model/db.php';

    $db = Database::getInstance();

    $db->query('SELECT * FROM users');
    if ($result = $db->query($query)) {
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        echo $row;
    }
    }
  • Supprimer la if, ça n'a pas de sens... à Faire: $result = $db->query(...)...
  • Ok! Mais Im toujours la même erreur:(
  • oui le if ne font sens!
  • Ce n'est pas logique, c'est appeler query deux fois, c'est ce que je voulais dire...
  • Dois-je donc écrire: if ($result = $db) {} à la place?
  • pourquoi voulez-vous un singleton? Pourquoi n'utilisez-vous pas cru instance de PDO? Eu aucun problème avec elle?
  • Son travail et devaient avoir une classe Singleton et PDO avec la connexion de base de données, pour objectif d'apprentissage:) Si vous avez une idée de ce que Im faire de mal s'il vous plaît laissez-moi savoir. Je n'ai pas très bien compris comment appeler la requête à partir de mon fichier d'index... @YourCommonSense
  • vous avez dit deux fois déjà. se débarrasser de if () { ligne et correspondant accolade de fermeture
  • et écrire de la ligne précédente comme $result = $db->query('SELECT * from users');
  • Pas une seule personne a dit de se débarrasser de la si et puis on m'a dit de ne pas se débarrasser de ça:/ j'ai essayé de se débarrasser de la si, mais ça n'a pas fonctionné non plus... je me fais l'erreur undefined variable de requête, mais n'est-il pas défini de cette façon: $db->query('SELECT * from users'); ??? Si j'écris ceci à la place: $query = "SELECT * from users"; Im obtenir le message d'erreur: Tableau de conversion de chaîne de caractères... @YourCommonSense
  • dans quelle ligne vous obtenez cette erreur?
  • Merci!!!!!! Ses résolus enfin et la requête $est défini:) me semble compliquer de temps en temps! J'ai besoin d'écrire: echo $row['username']; et il fonctionne. Mais je n'ai pas tout à fait comprendre pourquoi je ne peux pas juste l'écho le trou $row? C'est quand j'ai le Tableau de conversion de chaîne de caractères d'erreur... @YourCommonSense
  • parce que c'est un tableau. Pouvez-vous porter toute la wardobe, ne pouvez-vous pas? Non, vous pouvez porter une robe à la fois. Même avec l'écho des tableaux
  • Ok, je comprends:) je pensais que j'avais fait une variable qui a été en mesure d'imprimer le trou de la ligne avec un mot... Merci pour votre aide! @YourCommonSense

InformationsquelleAutor Lisa | 2013-11-16