JeuWeb - Crée ton jeu par navigateur

Version complète : mysql_insert_id()
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3
bonjour

je viens de découvrir la fonction mysql_insert_id() de mysql et je pense ne avoir besoin, mais j'hésites: voici mon questionnement:

en effet mysql_insert_id() retourne la valeur du champs qui est en auto increment apres une requete INSERT

mais si on prend ce pseudo code :

Code :
- INSERT quelque chose dans la base de donnée
- mysql_insert_id()

si le script est lancé par plusieurs internautes quasiment en meme temps, est ce que mysql_insert_id() va retourner la bonne valeur ou pas du tout ??

merci de m'avoir lu Wink

a+
bah il te donnera la dernière entrée...Pense aux transactions car comme tu le dis, il peux te donner un identifiant "croisé".
salut, donc si il y a moyen de ne pas s'en servir alors mieux vaut...c'est ce que tu veux dire?
dans la majorité des cas 99,9999%, les requêtes vont se trouver assez espacées dans le temps pour éviter ce genre de problème. Par contre, tu pourra bugger si par malchance, le délai entre deux requête est trop court...tu peux le simuler avec AJAX et 2 scripts qui insèrent et récupère l'identifiant. Cela te donnera un bon test.
Non, il n'y a aucun risque de téléscopage possible. Le last insert id est toujours l'id généré par la dernière requête insert ou replace effectuée sur la session courante. Et comme chaque script php ouvre une nouvelle connexion à MySQL, il y a autant de sessions MySQL différentes d'ouvertes qu'il n'y a de scripts php en cours d'exécution, sauf si on demande explicitement une connexion permanente... et là même si c'est théoriquement possible, il y a peu de chances que ça arrive.
Merci QuentinC, y'en a un qui lit la doc au moins avant de l'ouvrir ^^

Citation :mysql_insert_id() retourne le dernier identifiant généré par un champ de type AUTO_INCREMENT, sur la connexion MySQL courante ou sûr la connexion spécifiée par link_identifier.
donc finalement je ne risque rien du tout? avez vous eu deja des probleme avec mysql_insert_id() ?
Aucun ^^
Citation :avez vous eu deja des probleme avec mysql_insert_id() ?
Absolument aucun. La seule chose à laquelle il faut faire attention, c'est lorsqu'on fait des insertions multiples en une seule requête. C'est alors l'identifiant du premier enregistrement ajouté qui est retourné et non le dernier (même si c'est effectivement plus logique)
Aucun non plus.
Par contre j'avais pas pensé au problème or j'ai tendance ma classe d'abstraction utilise les connections permanentes si on lui demande, je vais donc rajouter une interdiction de récupérer l'id dans un tel cas
Pages : 1 2 3