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 :

LastInsertId() ne marche pas


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2010
    Messages : 40
    Par défaut LastInsertId() ne marche pas
    Salut tout le made

    Je souhaite récupérer le LastInsertId mais…..

    Erreur :

    Fatal error: Call to a member function lastInsertId() on a non-object in F:\Program Files\EasyPHP-5.3.3\www\produit_class_UserTable.php on line 10

    Fichier 1:produit_class_UserTable.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    class UserTable_produit
    {
               private $produit_lastInsertId;
     
               public function __construct($db)
               {   }
               public function produit_lastInsertId()
               {
    /*line 10*/   return  $this->produit_lastInsertId->lastInsertId();  /*line 10*/  
               } 
     
    }
    Fichier 2 : produit_lastInsertId.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php 
     
    require_once 'produit_class_UserTable.php';
    require_once 'produit_class_MyPDO.php';
     
     
    $db = new MyPDO('mysql:host=localhost;dbname=business_for_all', 'root', '');  
     
    $userTable_produit = new UserTable_produit($db);   
    $r=$userTable_produit->produit_lastInsertId();
    echo $r;
    ?>
    Fichier 3 : produit_class_MyPDO.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    class MyPDO extends PDO
    {
          public function __construct($dsn, $user=NULL, $password=NULL)
          {
                parent::__construct($dsn, $user, $password);
                $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          }
          public function prepare($sql, $options=NULL)
          {
                $statement = parent::prepare($sql);
                if(strpos(strtoupper($sql), 'SELECT') === 0) //requête "SELECT"
                {
                      $statement->setFetchMode(PDO::FETCH_ASSOC);
                }
                return $statement;
          }
    }

    A noter que tout se passe bien, l'enregistrement est bien ajouté mais impossible de choper d'avoir le lastInsertId ...

    merci .

  2. #2
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    et de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    class UserTable_produit
    {
               private $produit_lastInsertId;
     
               public function __construct($db)
               {  $this->produit_lastInsertId = $db->lastInsertId();  }
               public function produit_lastInsertId()
               {
                /*line 10*/   return  $this->produit_lastInsertId;  /*line 10*/  
               } 
     
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2010
    Messages : 40
    Par défaut la même erreur
    la même erreur

  4. #4
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    mais dans tout c'est à quel moment que tu exécutes ta requete ?

  5. #5
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    et si tu fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
     
    require_once 'produit_class_UserTable.php';
    require_once 'produit_class_MyPDO.php';
     
     
    $db = new MyPDO('mysql:host=localhost;dbname=business_for_all', 'root', '');  
     
    $userTable_produit = new UserTable_produit($db);   
    $r=$db->lastInsertId();
    echo $r;
    ?>

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2010
    Messages : 40
    Par défaut
    J’exécute mon requête directement âpre la l’insertion dans la table produite.

    A mon avis ,le moment d’ exécution de requête n’est pas intéressons, car la table produite n’est pas vide


  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2010
    Messages : 40
    Par défaut $r=$db->lastInsertId();
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $r=$db->lastInsertId();

    Il retourne toujours 0 même après l’insertion de plusieurs linges.

Discussions similaires

  1. [PDO] LastInsertId() ne marche pas
    Par eric.pommereau dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 02/05/2006, 17h39
  2. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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