Bonjour,
alors voila je viens de découvrir la fonction last_insert_id() de MySQL et j'aurais besoin de quelques confirmations pour voir si j'ai bien compris la doc qui ne me parait pas assez explicite...
- last_insert_id() permet de récupérer le dernier id auto_increment d'une base de données (celle sur laquelle on est connectée) toutes tables confondues même si on fout un mysql_close() après la dernière requéte INSERT (d'ailleurs ça ne renvoi que le last_insert_id() du premier INSERT)
- admettons que 2 utilisateurs soient connectés en même temps MySQL va renvoyer le last_insert_id() de chaque utilisateurs au bon utilisateur ou va-t-il renvoyer le dernier last_insert_id() incrémenté de la table ou de la base de données?
La question se résume à savoir si MySQL considére que l'utilisateur c'est la valeur $user de mysql_connect($host, $user, $pass) ou alors le "client" PHP (georges ou robert qui se baladent sur mon site depuis chacun chez soi) , qui ont tous la même valeur $user pour se connecter à la base
Merci d'une réponse,
si ça permet de récupérer le dernier id généré par table c'est le top (mais c'est pas possible on dirait), si c'est le dernier généré dans la base de données c'est génial aussi et si en plus ça permet de bien faire la différence entre le dernier id de robert, paul et georges et bien je vais pouvoir dormir tranquille la nuit (le jour aussi...)
la doc de last_insert_id() est là : http://dev.mysql.com/doc/refman/5.0/fr/information-functions.html
Si ça manque de précision ben demandez moi je pense faire un saut plusieurs fois par heure pour avoir une réponse !

en tout cas merci de m'aider sur ce coup là.
Enfin tu fais comme tu veux :D
Ceci dit si tu fermes ta session mysql tu n'as plus aucune garantie d'obtenir le "last_id" qu'il faut.
Ou alors, tu peux modifier ta fonction d'exécution de la façon suivante :
function executer_requete($requete, $retourId = false)
{
//ouverture connexion
//selection base
//exécution requête
$id = -1;
if ($retourId)
$id = mysql_insert_id();
//fermeture connexion
return $id;
}
Le fait de mettre le paramètre en optionel (c'est à dire en précisant $retourId = false) fait que tu n'as pas besoin de modifier ton code à chaque endroit où tu appelles la fonction, car executer_requete("SELECT..."); sera équivalent à executer_requete("SELECT...", false);
Que penses-tu de cette solution ?
Ceci dit si je trouve le moyen de stocker le last id en récupérant le résultat de SELECT LAST_INSERT_ID()
ça sera le top comme ça je pourrai le passer de connection en connection...
merci beaucoup.