problème fonction php avec LAST_INSERT_ID()
Bonsoir
J'ai un problème . J'ai une fonction php lié à un formulaire d'enregistrement dans 2 tables d'une base mysql. Normalement j'utilise le LAST_INSERT_ID() pour récupérer le numèro autoincrement creer dans la première table, et ainsi l'insérer dans la seconde table. Cette astuce a bien fonctionné. Mais je me suis aperçu que si j 'ai un grand nombre de personnes qui s'enregistrent en même temps, il y a un gros problème. En effet le num attribué à la personne crée à ce moment la ne va pas à la bonne personne. Il recoit un autre num d'une personne qui s'est enregistrée en meme temps.
fonction.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<?php
require('connexion.php');
//-----------------------------------
$a=$_POST['nom'];
$b=$_POST['prenom'];
$c=$_POST['login'];
$d=$_POST['pass'];
//-----------------------------------
$sql = "INSERT INTO inscrit(nom,prenom)VALUES('".$a."','".$b."')";
$exec = mysql_query($sql);
$sql _a= "INSERT INTO ident(login,mdp)VALUES(LAST_INSERT_ID(),'".$c."','".$d."')";
$exec_a = mysql_query($sql_a);
?> |
avec cela si les personnes n'enregistrent pas au même moment, cela fonctionne. Mais si il y a plusieurs personnes qui s'enregistrent en même temps, la c'est c'est gros problème.
J'avais pensé à une solution celle la mais elle ne fonctionne pas non plus.
fonction.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<?php
require('connexion.php');
//---------------------------------------------------
$a=$_POST['nom'];
$b=$_POST['prenom'];
$c=$_POST['login'];
$d=$_POST['pass'];
$e=md5($d);
//---------------------------------------------------
$sql = "INSERT INTO inscrit(pass,nom,prenom)VALUES('"$e"','".$a."','".$b."')";
$exec = mysql_query($sql);
//-----Selection du num auto en fonction du pass-----
$sql_a = "SELECT num_inscr FROM inscrit WHERE pass=".$e;
$exec_a = mysql_query($sql_a);
$res=mysql_fetch_object($exec_a);
//---------------------------------------------------
$sql _b= "INSERT INTO ident(num_inscr,login,mdp)VALUES('".$res->num_inscr."','".$c."','".$d."')";
$exec_b = mysql_query($sql_b);
?> |
mais la non plus cela en fonctionne pas.
Quelqu'un à une solution ?