2010-05-09 4 views
2

J'insertion d'un enregistrement en utilisant PDO et enregistrer le résultat dans $result que je l'utilise commeObtenir l'ID d'enregistrement ajouté avec MySQL juste préparé des déclarations

booléenne
$result = $addRecord->execute(); 

if ($result){ 
    //add successful 
} else { 
    //add unsuccessful 
} 

Je voudrais obtenir aussi le record id vient d'ajouter. Dans la table, chaque enregistrement a un champ auto_incremented appelé id. J'ai essayé de faire ce

$new_id = $result['id']; 

mais il semble $result ne tient pas réellement l'enregistrement ajouté. Quelqu'un peut-il confirmer cela et comment puis-je accéder au dossier que je viens d'ajouter?

Notez que plusieurs personnes peuvent ajouter à la même table en même temps, j'ai donc besoin de quelque chose de vraiment précis.

Répondre

4

PDO::lastInsertId() devrait fonctionner.

EDIT: (ne pas voir l'autre partie)

MySQL mantains le dernier id insert sur une http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id. html ">per-connnection Donc, si quelque chose d'autre insère une ligne, elle ne devrait renvoyer des résultats inattendus que si cette requête a été exécutée avec la même connexion (comme une connexion persistante)

+0

Mais comme je l'ai dit dans la question, et si plusieurs personnes ajoutaient en même temps, cela ne retournerait-il pas un identifiant éventuellement inséré par quelqu'un d'autre? Voir la dernière ligne de ma question – dmontain

+1

@dmontain: Non, c'est par connexion, chaque requête aurait sa propre connexion, donc ce ne serait pas un problème. – ryeguy

+0

@dmontain Ajout d'informations concernant la concurrence, y compris un lien vers la documentation MySQL. – Reece45

Questions connexes