Problème d'incrément avec PHP - mySQL
Hello,
Sur mon site, j'incémente un champ mySQL, de cette façon :
Code:
1 2
| $requetes[]="UPDATE t_system SET entry=entry+1";
makeTransaction($requetes); |
-> Le résultat est que cela incrémente de 3 !
Pour contre, si j'insère un echo :
Code:
1 2 3
| $requetes[]="UPDATE t_system SET entry=entry+1";
echo " ";
makeTransaction($requetes); |
-> Cela fonctionne ! (incrémentation de 1)
-> Je deviens ou quoi :oops:
Merci pour votre aide !
Il s'agissait d'ue erreur d'initialisation !
La routine "makeTransaction($requetes)" prend un tableau (qui contient la ou les requetes à exécuter en mode transaction).
-> Dans le même script, j'utilise (2x!) le même nom de tableau (à savoir requetes[]) mais je ne l'avais pas effacée !!!
-> Erreur de débutant ! Honte à moi !
-> Si dessous le script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
function makeTransaction($requetes){
//si le tableau est vide, on retourne...
if (count($requetes)==0)
{
return 'ok';
}
require('connection.php'); //établi la connection à la BD et sélectionne la BD
mysql_select_db($database_bd, $bd); //sélectionne la base de données
try
{
// Fixe le niveau transactionnel (optionnel, en principe est définit sur le serveur.
mysql_query("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE", $bd);
// Début de la transaction
mysql_query("BEGIN", $bd);
for ($i=0;$i<count($requetes);$i++)
{
//ici on recherche le terme "METTRE ICI ID" pour les mettres dans les sous-table
if (isset($current_created_id) AND $current_created_id!=0 ){
$requetes[$i]=str_replace ("METTRE ICI ID",$current_created_id,$requetes[$i]);
}
if(!@mysql_query($requetes[$i], $bd))
{
throw new Exception(mysql_error());
}
//on charge l'id crée, si aucuns id n'est crée( donc=0), on garde l'actuel
$current_created_id=mysql_insert_id()!=0?mysql_insert_id():$current_created_id;
}
// Valide la transaction (effectue toutes les requêtes depuis 'BEGIN')
mysql_query("COMMIT", $bd);
unset ($requetes);
return 'ok';
} |