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 06/09/2011, 13h35   #1
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Par défaut erreur sur mon lastid en ajout

Je ne comprends pas pourquoi PDO refuse cette syntaxe
Peut'étre a cause du prépare ?
Merci d'avance de votre aide
Code :
1
2
3
4
5
6
7
8
<?php
//======extrait
$req = $bdd->prepare("INSERT INTO `fi_livre` (`Actif_O_N`,`datetri`,`dateafiche`,`LeNom`,`Letexte`)
VALUES (:Cnon,:aujourdhuiTri,:aujourdhuiCT,:Lnom,:Ltxt)");
$req->execute(array( ':Cnon' => $Cnon,':aujourdhuiTri' => $aujourdhuiTri,':aujourdhuiCT' => $aujourdhuiCT,':Lnom' => $Lnom,':Ltxt' => $Ltxt));
$last_id = $req->lastInsertId();
//=====ligne 90 est le lastid======
?>
Call to undefined method PDOStatement::lastInsertId() in C:\jpbhtml\1 web fox infographie\outil_livre_d_or.php on line 90
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 14h11   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Somme toute légitime puisque lastInsertId() est une méthode de PDO, pas de PDOStatement

Code :
1
2
$last_id = $bdd->lastInsertId();
$bdd->commit();
Avant commit.
julp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/09/2011, 14h31   #3
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Citation:
Envoyé par julp Voir le message
Somme toute légitime puisque lastInsertId() est une méthode de PDO, pas de PDOStatement
Merci a toi, toujours attentif aux autres mais voila une de mes faiblesse,
je comprends ta remarque, mais je ne sais l'utiliser sous forme d'un code j' ais pourtant lu cette syntaxe sur le web ....

Tu obtiendrais comment ce fichu lastid si simple en MySql !

Merci encore a toi
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 14h43   #4
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour,

peut être sur ce lien :

http://fr.php.net/manual/fr/pdo.lastinsertid.php#105580
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 14h54   #5
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Citation:
Envoyé par syl2095 Voir le message
Merci a toi, bien sur, vue mon anciennetée ici tu imagines bien que je ne poses jamais de question sans avoir cherchée, surtout sur php.net

Mais justement tu verras sur cette page que deux code sont proposés,
1) sans prepare
2) avec prepare a mon sens bien compliqué avec un
Code :
1
2
3
4
5
 
$dbh->beginTransaction(); 
$tmt->execute( array('user', 'user@example.com')); 
$dbh->commit(); 
print $dbh->lastInsertId();
J' espérais mieux
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h09   #6
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Oui, il y a en plus la notion de transaction...

Sinon ce code ne te sied pas ?

Code :
1
2
3
4
5
6
7
$sql = "INSERT INTO product (product_name) OUTPUT INSERTED.product_id VALUES (?)";
 
$sth = $dbh->prepare($sql);
 
$sth->execute(array('widgets'));
 
$temp = $sth->fetch(PDO::FETCH_ASSOC);
Ensuite tu fais ...
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/09/2011, 15h34   #7
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
J'ais honte,
sur le code de mon premier message je n'arrives pas a l'écrire
Tu appliquerais ta méthode comment sur mon premier code ?
merci d'avance.
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 15h43   #8
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Code :
1
2
3
4
5
6
7
8
9
10
 
$req = $bdd->prepare("INSERT INTO `fi_livre` (`Actif_O_N`,`datetri`,`dateafiche`,`LeNom`,`Letexte`)
VALUES (:Cnon,:aujourdhuiTri,:aujourdhuiCT,:Lnom,:Ltxt)");
$req->execute(array( ':Cnon' => $Cnon,':aujourdhuiTri' => $aujourdhuiTri,':aujourdhuiCT' => $aujourdhuiCT,':Lnom' => $Lnom,':Ltxt' => $Ltxt));
 
$temp = $req->fetch(PDO::FETCH_ASSOC);
 
echo '<pre>';
print_r($temp);
echo '</pre>';
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 16h00   #9
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
J'ais bien peur que ce soit autre chose qui ne marche pas,
pourtant tout mes sites sont en PDO et celui-ci depuis longtemps !
Code :
1
2
3
4
5
 
$req = $bdd->prepare("INSERT INTO `fi_livre` (`Actif_O_N`,`datetri`,`dateafiche`,`LeNom`,`Letexte`)
VALUES (:Cnon,:aujourdhuiTri,:aujourdhuiCT,:Lnom,:Ltxt)");
$req->execute(array( ':Cnon' => $Cnon,':aujourdhuiTri' => $aujourdhuiTri,':aujourdhuiCT' => $aujourdhuiCT,':Lnom' => $Lnom,':Ltxt' => $Ltxt));
$temp = $req->fetch(PDO::FETCH_ASSOC);
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error' in C:\jpbhtml\1 web fox infographie\outil_livre_d_or.php:90 Stack trace: #0 C:\jpbhtml\1 web fox infographie\outil_livre_d_or.php(90): PDOStatement->fetch(2) #1 {main} thrown in C:\jpbhtml\1 web fox infographie\outil_livre_d_or.php on line 90
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 16h23   #10
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
ouais c'est pas le bon chemin

Les exemples cités ne sont pas valables pour mysql... désolé...

et si tu fais :

Code :
1
2
3
...
$sth->execute(array('widgets'));
echo $bdd->lastInsertId();
?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/09/2011, 16h40   #11
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Ainsi mon code tout simple de mon premier message était bon, a ceci pret qu'il fallait pointer $bdd et non $req
$temp =$bdd->lastInsertId();
Super merci
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h57.


 
 
 
 
Partenaires

Hébergement Web