IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

No error: PDO constructor was not called in [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut No error: PDO constructor was not called in
    Bonjour,
    Je rencontre un avertissement que je ne comprends pas lors de l'utilisation de PDO...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: PDO::prepare() [pdo.prepare]: SQLSTATE[00000]: No error: PDO constructor was not called in /home/mike/workspace/www-dev/private/Footix/Personne.php  on line 100
    Qui provient du morceau de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		$sql = "SELECT * FROM Soigneur WHERE idP=".$idP;
    		$dbo = $this->db->prepare($sql);
    		$dbo->execute(array());
    La ligne 100 correspond à : $dbo = $this->db->prepare($sql);
    $db est déclarée comme suit (dans la méthode construct) : $this->db = new MySQL(); . La classe MySQL a herité la classe PDO.
    Si je remplace $dbo = $this->db->prepare($sql); par $this->db->prepare($sql);, le problème est identique...

    Après plusieurs recherches Google, aucune ne se relève concluante...

    Merci.

    Pour information :
    PHP Version 5.3.2-1ubuntu4.2

    Edit: Je viens de m'apercevoir qu'il y avait une rubrique PDO... Si un admin peut déplacer le topic. Merci

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    L'erreur indique (apparemment) que le constructeur PDO ne serait pas appelé.
    Du coup, j'ai l'impression que l'erreur ne se situerait pas dans cette partie de code, mais dans la classe MySQL().
    Faudrait y mettre du code de cette, qu'on voit un peu comment tu as procédé.

    Toujours est il qu'il y a un forum dédié à Pdo (c'est là à mon sens où il aurait dû être posté), du coup, épluche un peu les topics, il y a des codes, c'est autant d'exemples bien utiles, qui peut être te permettras de trouver l'erreur.
    Forum PDO -> http://www.developpez.net/forums/f825/php/php-sgbd/pdo/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut
    Bonjour,
    Merci de te réponse et désolé du retard de cette réponse...
    Je voulais surcharger la méthode __construct() de ma classe MySQL héritée de la classe PDO, pour que ma connexion soit initialisé à la création de l'objet.

    J'ai réussi en ré-écrivant ainsi (ma fonction __construct() était fausse)
    Fichier MySQL.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class MyClass extends PDO
    {
    private $user = "root";
    private $pass ="password";
    private $name = "mysql:host=localhost;dbname=Footix";
     
    	public function __construct()
    		{
    		parent::__construct($this->name, $this->user, $this->pass);
    		}
    }
    Fichier test.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    require_once("php.php");
     
    $db = new MyClass();
    // Essaie d'une requête
    $sql = "SELECT * FROM viande WHERE id = ?";
    $db_p = $db->prepare($sql);
    $db_p->execute(array(1));
    // Fonction parfaitement
    print_r($db_r = $db_p->fetchAll());

    Je me permet de faire quelques remarques sur le code que j'ai posté.
    J'utilisais (très) mal la préparation de requête PDO :
    On ne doit JAMAIS l'utiliser ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		$sql = "SELECT * FROM Soigneur WHERE idP=".$idP;
    		$dbo = $this->db->prepare($sql);
    		$dbo->execute(array());
    => Ceci revient a une requête non préparé !!!

    Mais de cette forme (afin d'éviter les injections) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		$sql = "SELECT * FROM Soigneur WHERE idP= ? ";
    		$dbo = $this->db->prepare($sql);
    		$dbo->execute(array($idP));
    J'espère que ca vous sera utile, et merc ài RunCodePhp pour ta réponse.
    Milke

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Typo3] Database Error - The Current Username, Password Or Host Was Not Accepted etc.
    Par poumtatalia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 20/09/2010, 11h07
  2. Réponses: 0
    Dernier message: 20/02/2010, 16h30
  3. [PDO] PDO::FETCH_CLASS : could not call class constructor
    Par Invité dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 15/12/2009, 20h01
  4. error : 'tr' was not declared in this scope
    Par jimaitou dans le forum Débuter
    Réponses: 3
    Dernier message: 13/05/2009, 13h54
  5. Réponses: 3
    Dernier message: 03/06/2007, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo