Bonjour à tous,

Tout d'abord j'ai cherché une solution pendant un bout de temps mais je ne trouve pas, alors me voilà !

J'ai un site où je souhaite ajouter une application à une BDD MySQL, pour ça aucun soucis bien évidemment, je récupère le dernier ID enregistré avec la méthode lastInsertId()

Mais j'ai pensé que si deux utilisateurs veulent ajouter une application en même temps alors le lastInsertId() sera faussé forcément car MySQL va me renvoyer l'ID de l'application la plus récente qui aura été ajouté entre temps.

Voici mon code qui sera plus parlant :

if(isset($_POST['ajouter']))
                    {
                        include('connex/connexion.php');

                            $req = $bdd->prepare('INSERT INTO applications VALUES ("", :app_name, :app_info, :app_url)');
                                        $req -> execute(array(
                                            'app_name' => $app_name,
                                            'app_info' => $app_info,
                                            'app_url' => $app_url));    

                                            $id = $bdd->lastInsertId();

                            $req = $bdd->prepare('INSERT INTO images VALUES ("", :img_name, :img_taille, :img_type, :img_desc, :img_url, :id)'); 
                                        $req -> execute(array(
                                            'img_name' => $img_name,
                                            'img_taille' => $img_taille,
                                            'img_type' => $img_type,
                                            'img_desc' => $img_desc,
                                            'img_url' => $img_url,
                                            'id' => $id));
                            $flag = "Application Ajoutée Avec Succès !";
                            $tot = $bdd->query("SELECT COUNT(*) FROM applications")->fetchColumn();
                    }

Je ne trouve pas d'alternative à mon code, une méthode qui permettrait de récupérer non pas le dernier ID mais l'ID de l'enregistrement en question.

J'espère que vous pourrez m'aider,

Merci d'avance !

3 réponses


Huggy
Réponse acceptée

Le lastInsertId est propre à une connexion, donc en principe un utilisateur ne peut pas récupérer le dernier Id d'un autre.

skp
Réponse acceptée

Bonjour, @Huggy a raison, d'ailleurs c'est aussi précisé dans la doc

Hurobaki
Auteur

Bonjour,
Merci pour vos réponses je n'ai pas bien lu la doc c'est de ma faute.
En tout cas merci mon code n'a donc pas besoin d'être changé !
Merci et bonne soirée