Bonjour à tous,

J'ai un problème avec les requêtes préparées, plus simple est encore que je vous montre mon code :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$sql_prepare = "PREPARE my_balise FROM
		'SELECT files.ID as \'id_image\', t.ID, folios.cote
		FROM transcriptions t
		INNER JOIN Relations ON t.ID = Relations.idtabledest
		AND Relations.tabledest = \'transcriptions\'
		AND Relations.tablesource = \'folios\'
 
		INNER JOIN folios ON folios.ID = Relations.idtablesource
 
		INNER JOIN files ON files.idnotice = Relations.idtablesource
		AND files.type = \'output\'
		AND files.mimetype = \'image/jpeg\'
		AND files.tablesource = \'folios\'
 
		WHERE t.transcription_text LIKE ? ORDER BY folios.cote'  ";
 
$db->execute($sql_prepare); //a priori là ça passe
 
foreach($finded as $balise_unique)
{
 
$sql = "
SET @mavariable = " . $db->quote_smart($balise_unique) . "
 
EXECUTE my_balise USING @mavariable
";
 
$result = $db->execute($sql); //évidemment là ça plante :)
 
}
Précisions :
La requête que je prépare, fonctionne évidemment en mode "normal" (non préparé).
La fonction quote_smart() applique un mysql_real_escape()
La fonction execute() fait appel à mysql_query()

L'erreur que j'obtiens est la suivante :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXECUTE my_balise USING @mavariable' at line 3
Pour info voici les requêtes générées par mon script :

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
PREPARE my_balise FROM
		'SELECT files.ID as \'id_image\', t.ID, folios.cote
		FROM transcriptions t
		INNER JOIN Relations ON t.ID = Relations.idtabledest
		AND Relations.tabledest = \'transcriptions\'
		AND Relations.tablesource = \'folios\'
 
		INNER JOIN folios ON folios.ID = Relations.idtablesource
 
		INNER JOIN files ON files.idnotice = Relations.idtablesource
		AND files.type = \'output\'
		AND files.mimetype = \'image/jpeg\'
		AND files.tablesource = \'folios\'
 
		WHERE t.transcription_text LIKE ? ORDER BY folios.cote'
Et l'appel à la requête préparée (c'est juste un exemple) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SET @mavariable = '<span style=\"font-size: 12pt; font-family: \'Times New Roman\'\">' EXECUTE my_balise USING @mavariable
Si quelqu'un voit l'erreur, je suis preneur
Merci d'avance.