[MySQL/php] Téléscopage de requêtes

Résolu/Fermé
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011 - 9 janv. 2009 à 16:23
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011 - 9 janv. 2009 à 17:09
Bonjour,

Dans un script en php, j'ai une fonction query qui envoie une requête MySQL et j'envoie les deux requêtes suivantes à un endroit du script sous une forme qui ressemble à ça:
query("INSERT INTO table1 (id,name) VALUES ('nom1')");
query("INSERT INTO table2 (id_table1,autre_info) VALUES (LAST_INSERT_ID(),'blabla')");

Je récupère l'id de la première requête (fixé par auto_increment) à l'aide de la fonction LAST_INSERT_ID().

Ma question :

Y a-t il un risque de téléscopage de ces requêtes si deux utilisateurs exécutent chacun ce script exactement en même temps depuis deux sessions différentes ? (Du coup le LAST_INSERT_ID() pour le premier groupe de requêtes serait celui du deuxième).

Réponse à argumenter ;-)

Merci !
A voir également:

4 réponses

Bonjour

C'est écrit en toutes lettres dans le manuel de référence de mysql. Ça n'est pas caché dans un recoin, c'est dès le début du paragraphe sur la fonction LAST_INSERT_ID().
Alors, pourquoi avoir posé la question ici ? Réponse à argumenter ;-)
0
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011
9 janv. 2009 à 16:45
Effectivement, il y a marqué ceci dans la doc sur LAST_INSERT_ID() :

Le dernier ID généré est conservé par le serveur pour chaque connexion. Un autre client ne la modifiera donc pas, même s'ils génèrent une autre valeur AUTO_INCREMENT de leur coté. Ce comportement permet de s'assurer que les actions des autres clients ne perturbe pas les actions du client en cours.

La raison de mon doute est la suivante:
Que signifie "un autre client" ? Deux sessions différentes au niveau du serveur sont-elle des clients différents même si elles se connectent en tant que même utilisateur à la base ?
Si oui effectivement il n'y a pas de risque de téléscopage.
0
Le dernier ID généré est conservé par le serveur pour chaque connexion.. Si deux utilisateurs se connectent avec les mêmes identifiants, il s'agit quand même de deux connexions différentes.
D'ailleurs, dans la plupart des cas, tous les utilisateurs d'un site utilisent les mêmes identifiants. Ce sont ceux codés dans les scripts, et je n'ai encore jamais rencontré ici (mais ça existe sûrement) de gens qui codaient des connexions différemment selon les utilisateurs.
0
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011
9 janv. 2009 à 17:09
OK Merci Toto, le doute est levé. C'était juste pour être bien sur plutôt que découvrir ça en cours d'utilisation.

Puisque tu m'as l'air bien callé puis-je te suggérer un autre problème un peu plus costaud (toujours en MySQL) ?
http://www.commentcamarche.net/forum/affich 10386321 mysql probleme de jointure?#1

Merci en tous cas pour ton aide.
0