Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/03/2011, 00h39   #1
Invité régulier
 
Adel Echi
Inscription : juillet 2010
Messages : 30
Détails du profil
Informations personnelles :
Nom : Adel Echi
Localisation : Tunisie

Informations forums :
Inscription : juillet 2010
Messages : 30
Points : 6
Points : 6
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 :
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 :
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 :
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 .
zamoud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 00h55   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
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 : 586
Points : 859
Points : 859
et de cette manière :
Code :
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*/  
           } 
 
}
__________________
Développeur informatique contrarié...
vorace est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 01h07   #3
Invité régulier
 
Adel Echi
Inscription : juillet 2010
Messages : 30
Détails du profil
Informations personnelles :
Nom : Adel Echi
Localisation : Tunisie

Informations forums :
Inscription : juillet 2010
Messages : 30
Points : 6
Points : 6
Par défaut la même erreur

la même erreur
zamoud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 01h25   #4
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
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 : 586
Points : 859
Points : 859
mais dans tout c'est à quel moment que tu exécutes ta requete ?
__________________
Développeur informatique contrarié...
vorace est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 01h35   #5
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
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 : 586
Points : 859
Points : 859
et si tu fais ca :
Code :
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;
?>
__________________
Développeur informatique contrarié...
vorace est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 01h38   #6
Invité régulier
 
Adel Echi
Inscription : juillet 2010
Messages : 30
Détails du profil
Informations personnelles :
Nom : Adel Echi
Localisation : Tunisie

Informations forums :
Inscription : juillet 2010
Messages : 30
Points : 6
Points : 6
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

zamoud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 02h01   #7
Invité régulier
 
Adel Echi
Inscription : juillet 2010
Messages : 30
Détails du profil
Informations personnelles :
Nom : Adel Echi
Localisation : Tunisie

Informations forums :
Inscription : juillet 2010
Messages : 30
Points : 6
Points : 6
Par défaut $r=$db->lastInsertId();

Code php :
$r=$db->lastInsertId();

Il retourne toujours 0 même après l’insertion de plusieurs linges.
zamoud est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h11.


 
 
 
 
Partenaires

Hébergement Web