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 :

erreur sur mon lastid en ajout [PDO]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Somme toute légitime puisque lastInsertId() est une méthode de PDO, pas de PDOStatement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $last_id = $bdd->lastInsertId();
    $bdd->commit();
    Avant commit.

  3. #3
    Invité
    Invité(e)
    Par défaut
    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

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  5. #5
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $dbh->beginTransaction(); 
    $tmt->execute( array('user', 'user@example.com')); 
    $dbh->commit(); 
    print $dbh->lastInsertId();
    J' espérais mieux

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Oui, il y a en plus la notion de transaction...

    Sinon ce code ne te sied pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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))

  7. #7
    Invité
    Invité(e)
    Par défaut
    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.

  8. #8
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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))

  9. #9
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  10. #10
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    ouais c'est pas le bon chemin

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

    et si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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))

  11. #11
    Invité
    Invité(e)
    Par défaut
    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

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

Discussions similaires

  1. [SQL] Erreurs sur mon serveur ifrance.
    Par solaar dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/03/2008, 22h20
  2. Erreur sur mon formulaire de contact
    Par Angeldu74 dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2008, 00h06
  3. Erreur sur mon fichier web.xml
    Par Chikh001 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/12/2007, 09h30
  4. Réponses: 8
    Dernier message: 29/10/2007, 17h52
  5. Message d'Erreur sur mon Terminal
    Par highdata dans le forum VB.NET
    Réponses: 2
    Dernier message: 04/06/2007, 21h44

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