OVH Community, votre nouvel espace communautaire.

Last_insert_id()


sfk
08/04/2010, 13h45
Bonjour,
Je ne suis pas sur de bien comprendre l'enchainement des pages php avec les requêtes SQL.

- Quelle est la page qui fait l'insert ?
- Quelle est la page qui utilise la fonction mysql_insert_id ?

Pour information, une page php ne peut pas utiliser mysql_insert_id() pour un insert qui a été fait par une autre page. La raison est que les connexions à la bases SQL sont mutualisées et qu'entre l'exécution des 2 scripts php, la connexion SQL a pu être utilisée par un autre site web.

ThierrySedbon
05/04/2010, 16h08
J'ai un problème sur le serveur OVH avec l'instruction LAST_INSERT_ID() et mysql_insert_id()
J'ai une application très simple qui fonctionne très bien en local (Serveur PHP/SQL/Apache WAMPSERVER)

Un questionnaire de quelque ligne rajoute un enregistrement dans une base de données SQL,

Puis une page PHP vient lire le dernier enregistrement grâce à l'instruction LAST_INSERT_ID.

Le premier script rajoute bien un enregistrement dans la base, mais le deuxième ne récupère pas toujours la bonne valeur du LAST_INSERT_ID, aléatoirement je récupère la bonne valeur de ID, une autre valeur et le plus souvent rien du tout.

Vous pouvez le tester sur mon site à l'adresse http://www.sedbon.eu/QCM3/exemple7_Q.php pour le questionnaire qui vient remplir la base de donné (ceci fonctionne) et http://www.sedbon.eu/QCM3/exemple7_R.php pour la lecture de l'enregistrement.


Ces deux scripts sont très simples. J'ai passé plusieurs dizaine d'heures à chercher une solution. Je ne comprends pas pourquoi ces scripts fonctionnent très bien en local mais pas sur le serveur OVH. Pouvez-vous m'aider. Je vous en serais extrêmement reconnaissant, j'ai absolument besoin que cela fonctionne.



Le script Le Script exemple7_Q.php : qui alimente la base de données et qui semble fonctionner est posté sur la question suivante sur le même forum du fait que nous sommes limité à 10.000 mots





Le Script exemple7_R.php est ci-dessous

Il lit le dernier enregistrement et il ne fonctionne pas.







if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

mysql_select_db($database_itproject, $itproject);

$query_rscorection = ("SELECT * FROM reponse WHERE ID = LAST_INSERT_ID()");

$rscorection = mysql_query($query_rscorection, $itproject) or die(mysql_error());
$row_rscorection = mysql_fetch_assoc($rscorection);
$totalRows_rscorection = mysql_num_rows($rscorection);
$new_id = mysql_insert_id()

?>

"http://www.w3.org/TR/html4/loose.dtd">



It-Project QCM Juin 2007 1er partie





$Last_ID = $row_rscorection['ID'];
$Commentaire = $row_rscorection['Commentaire'];

$Q11a = $row_rscorection['Q11a'];
$Q11b = $row_rscorection['Q11b'];
$Q11c = $row_rscorection['Q11c'];
$Q11d = $row_rscorection['Q11d'];
$Q11e = $row_rscorection['Q11e'];
$Q11f = $row_rscorection['Q11f'];

$Q12a = $row_rscorection['Q12a'];
$Q12b = $row_rscorection['Q12b'];
$Q12c = $row_rscorection['Q12c'];
$Q12d = $row_rscorection['Q12d'];
$Q12e = $row_rscorection['Q12e'];

?>


Pour la variable New_ID :

Pour la variable Last_ID :

Pour la variable Commentaire :


































mysql_free_result($rscorection);
?>





Merci pour toute l'aide que vous pourrez m'apporter.

Cordialement.