Bonjour,

Je voudrai améliorer mon code car j'ai une requête SQL qui est située à l'intérieur d'une boucle.
Je voudrai passer par une requête préparée afin que l'exécution soit plus rapide mais j'ai quelques problèmes.

Voici le code original :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
for ($iSemaine= 1; $iSemaine<=$nbSemainesAffichees; $iSemaine++){ 
 
     // ...
     $sqlhtrav = "SELECT sum(nbrehtravaillees)
	FROM ".$table["intervention"]."
	WHERE id_categorie ='$idcategorie'
	AND('$debutSemaine'<= datedebut && '$finSemaine'> datedebut)
	AND id_utilisateur='$utilisateur'
	";
     $reshtrav = mysql_query($sqlhtrav)or die ('Erreur SQL'.$reshtrav.'<br>'.mysql_error());	
     //...
 
}
 
?>

J'ai essayé de le remplacer par ce qui suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$sqlTrav = "PREPARE req FROM 'SELECT sum(nbrehtravaillees) FROM intervention WHERE id_categorie =`$idcategorie` AND id_utilisateur=`$utilisateur` AND `dateDebut` BETWEEN ? AND ?'";
mysql_query($sqlTrav);
 
for ($iSemaine= 1; $iSemaine<=$nbSemainesAffichees; $iSemaine++){ 
     //...
     $sqlTrav = "SET @debut_semaine=".$debutSemaine.", @fin_semaine=".$finSemaine."";
     mysql_query($sqlTrav);
     $sqlcontrat = "EXECUTE req USING @debut_semaine, @fin_semaine";
     $reshtrav = mysql_query($sqlcontrat)or die ('Erreur SQL'.$reshtrav.'<br>'.mysql_error());	
 
     //...
}
?>
Mais j'ai l'erreur suivante :
Erreur SQL
Unknown prepared statement handler (req) given to EXECUTE