JeuWeb - Crée ton jeu par navigateur
[Résolu] Problème php/sql - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Problème php/sql (/showthread.php?tid=3356)



[Résolu] Problème php/sql - My Hotel - 30-11-2008

Bonjour à tous

Je me pose une question pas capitale, mais qui pourrait me permettre d'économiser des ressources serveur, et de diminuer le temps d'exécution de la page.

Je prends un exemple simple :
-Quelqu'un s'inscrit sur mon site
-J'ajoute pseudo, passe, mail dans ma BDD, et l'id est auto-incrémenté
-Et là, je veux récupérer l'id de l'entrée que je viens d'ajouter

Je vois deux solutions :
-Je fais une requête en sélectionnant la dernière entrée en date, et je récupère l'ID. Inconvénients : double requète (inscription, et lecture de l'ID), et si, par un grand hasard, quelqu'un d'autre s'inscrit juste après l'inscription, mais avant la lecture de l'ID, l'ID récupéré sera faux!
-Ou alors, je n'auto-incrémente pas mon ID, et je l'ajoute "à la main". Inconvénients : pour ajouter un ID libre, il faut quand même lire le dernier ID : double requète.

Donc, j'aimerais un INSERT INTO qui puisse en même temps récupérer l'ID de l'entrée.

Je ne sais pas si c'est possible, sinon conseillez moi d'autres solutions.

Merci!


RE: Problème php/sql - Sephi-Chan - 30-11-2008

Comme l'a dit Oxman, tu peux utiliser la fonction de PHP mysql_insert_id().

Dans le cas où tu veux l'utiliser pour un UPDATE ou autre, cette information est accessible dans tes requêtes MySQL avec la fonction MySQL LAST_INSERT_ID().


Sephi-Chan


RE: Problème php/sql - My Hotel - 30-11-2008

Merci beaucoup des réponses rapides... Je connaissais mysql_insert_id, mais je voulais savoir si c'était possible de faire mieux. Apparemment non, merci quand même.

Mais je retombe sur le problème. Imaginons que j'insère mes données, que quelqu'un s'inscrive un milliardième de seconde après, et que là, je lance la fonction mysql_insert_id(), j'aurais pas le bon ID correspondant à l'inscription... C'est un hasard très rare, mais ça peut arriver, et ça fausserai tout le jeu!


RE: Problème php/sql - Sephi-Chan - 30-11-2008

Selon la documentation, c'est une donnée fiable.

Si tu n'as quand même pas confiance, utilises des transactions (en pensant à utiliser le moteur de stockage InnoDB (plutôt que MyIsam) sur les tables sur lesquelles tu utilises ces transactions).


Sephi-Chan