PDO + singleton

Résolu
cs_eltyty Messages postés 86 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 22 novembre 2011 - 11 oct. 2009 à 22:49
cs_eltyty Messages postés 86 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 22 novembre 2011 - 14 oct. 2009 à 10:01
Bonjour,

J'ai réalisé un code pour réaliser une connexion "singleton" avec PDO or j'ai une erreur.

Voilà le code du singleton :
class Connexion_serveur {

           /**
     * Instance de la classe PDO
     */
    private $PDOInstance = null;

    /**
     * Instance de la classe SPDO
     */
    private static $instance = null;
 
    private function __construct()	    {
        try {
        $this->PDOInstance = new PDO(DB_DSN, DB_USER, DB_PASSWORD);
        $this->PDOInstance->query("SET NAMES utf8");//FOR USING UTF-8
        $this->PDOInstance->query("SET CHARACTER SET 'utf8'");//FOR USING UTF-8
        }
        catch (PDOException $e){
            echo 'Erreur : '.$e->getMessage().'
';
            die();
        }
        
    }
 
    /**
     * Crée et retourne l'objet SPDO
     */
    public static function getInstance()
    {
        if(is_null(self::$instance)OR !ISSET(self::$instance))      {
            self::$instance = new Connexion_serveur();
        }
        return self::$instance;
    }
        /**
        * Empeche la copie externe de l'instance
        */
    private function __clone() {
        throw new Exception('Le clonage de SPDO n\'est pas autorisé');
    }
}

Et maintenant j'essaie de faire une requête en PDO :
$db=Connexion_serveur::getInstance();
$insert = "INSERT INTO logs_erreurs (date_erreur, texte_erreur) VALUES (?, ?)";
$statement = $db->prepare($insert);
$statement->bindParam(1, "test", PDO::PARAM_STR);
$statement->bindParam(2, "texte", PDO::PARAM_STR);
$statement->execute();

Et du coup j'obtiens : Call to undefined method Connexion_serveur::prepare()

Je début au niveau de PDO.

Merci de votre aide car après je compte mettre une class pour les requêtes qui utilisera cette connexion singleton.

17 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
13 oct. 2009 à 23:06
Pour ce qui est de la patience, je n'en ai aucune quand il s'agit de boulets qui ne savent pas écrire ou manquent cruellement de politesse.
Par contre, quelqu'un qui s'intéresse à PDO, au design pattern du singleton (peut-être d'autres plus tard ?), je me sens obligé de prendre le temps, c'est ma manière de faire du prosélytisme :)
Tu aurais voulu utiliser mysql_query(), j'aurais pas insisté, vraiment. Mais là, je ne peux que t'aider à utiliser PDO en singleton, c'est pour le bien de l'humanité !

--
Neige

N'hésitez pas à lire la doc
3
Rejoignez-nous