|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : juillet 2011 Messages : 31 ![]() |
Je veux récupérer l'id de la ligne que je viens de créer, pour crée une autre ligne dans une autre table associée.
J'utilise PDO pour faire mes requêtes à partir de PHP sur MySQL. Par exemple j'insère un pays, l'id créé est 10 (auto-incrément). Je veux récupérer l'id du pays pour pouvoir créer juste après une ville avec pays_id = 10. Si j'utilise PDO::lastInsertId, je risque de récupérer la mauvaise id, si quelqu'un a créé un autre pays entre temps (et ma ville sera alors associée au mauvais pays). Comment faire alors ? (je débute en sql, je ne connais que select, update, delete, insert et c'est tout!)) |
|
|
00
|
|
|
#2 | |
![]() ![]() |
Citation:
Le lastinsertid récupère le dernier auto-incrément créé par la connexion MySQL en cours. Si un autre utilisateur arrive et crée un pays, il aura une autre connexion donc un autre lastinsertid.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
20
|
|
|
#3 |
|
Invité régulier
![]() Inscription : juillet 2011 Messages : 31 ![]() |
ah bon je ne savais pas ! Je ne vois rien qui mentionne ça dans la doc de PDO.
Et à quel moment la connexion MySQL s'arrete ? |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Développeur informatique Inscription : août 2005 Messages : 1 179 ![]() |
Bonjour,
Avant de créer la ville, faire une requête recupérant le dernier id : exemple avec mysql Code :
__________________
http://cdemarche.developpez.com/ Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
|
||
|
|
01
|
|
|
#5 | |||
![]() ![]() |
Citation:
De plus, ta requête n'est pas terrible ! Celle-ci serait beaucoup mieux :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#6 |
|
Membre Expert
![]() Développeur informatique Inscription : août 2005 Messages : 1 179 ![]() |
oui, en relisant, je me suis précipité... mea culpa
pour me rattraper : A moins qu'elle ne soit persistante (PDO::ATTR_PERSISTENT) la connexion sera close automatiquement par PHP une fois le script terminé. Tu peux la clore toi-même en faisant un unset sur l'objet PDO (ou en lui attribuant la valeur null).
__________________
http://cdemarche.developpez.com/ Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
|
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : juillet 2011 Messages : 31 ![]() |
Petit conseil sur l'utilisation de lastInsertId, parce que j'ai fait l'erreur :
Quand on utilise les transactions, si on appelle lastInsertId après le commit, il renvoie 0... Il faut le récupérer avant le commit pour avoir la bonne valeur. Je pensais que l'id n'était pas créé tant que la transaction n'était pas commitée mais c'est l'inverse. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com