Retouner l'id de la dernier engregistrement

Binarios
Invité n'ayant pas de compte PHPfrance

16 avr. 2008, 18:18

Bonjour tout le monde
je travalle sur un projet avec une base de donnée, je utilise mysql_insert_id() pour retourner l'id de la l'enregistreemnt enregistré dans la base,
mais je connu pas bien la fontion de cette fontion,
est ce que cette fontion sera util dans le cas ou plusieurs personnes ont enregistrer leurs donnée au meme temps
et merci

Eléphant du PHP | 422 Messages

16 avr. 2008, 18:36

est ce que cette fontion sera util dans le cas ou plusieurs personnes ont enregistrer leurs donnée au meme temps
Sauf si tu n'as pas de bol, il n'y aura jamais plusieurs personnes qui enregistreront leurs données exactement en même temps. Il y aura toujours un décalage de quelques millisecondes entre ellles.

Sinon, il n'y a pas de problème puisque lorsqu'un ordre fait un autoincrément, MySQL bloque la table, fait son INSERT et débloque la table. Donc même si un autre utilisateur fait une action pile pendant ce blocage (qui ne dure que quelques millisecondes), MySQL le mettra en file d'attente avant de fournir un autre numéro.

Enfin, si tu veux vraiment t'assurer qu'il n'y aura aucun problème, tu peux toujours envoyer un ordre LOCK à la table avant l'insertion, puis un ordre UNLOCK.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 avr. 2008, 19:41

Il n'y a pas de simultanéité en informatique. Les requêtes sont toujours exécutés les unes après les autres.

Les choses se compliquent quand tu veux exécuter 2 requêtes sans qu'aucune requête ne s'exécute entre les 2, et là, le LOCK est utile.
Pour le LAST_INSERT_ID, comme il est retourné par la requête INSERT, donc dans la même requête, il n'est pas nécessaire de ce soucier de la simultanéité ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer