Bonjour,

En PHP j'appele une méthode de classe qui elle même fait appelle à une focntion MySQL.

Or dans cette fonction MySQL j'ai un SELECT avec un WHERE IN, il se fait que le passage de variable transforme la valeur du IN

de ceci
Il arrive comme cela
Ce qui bien entendu n'a absolument rien à voir.

mon_nom_est_personne , a trouver une solution ici, mais je n'arrive pas à reproduire le résultat escompté, j'ai trouvé une procédure qui fais exactement ce que je lui demande

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
32
33
34
35
36
37
38
 
DELIMITER $$
 
DROP PROCEDURE IF EXISTS `pontaury`.`explode`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `explode`(IN input text,IN delim VARCHAR(10))
BEGIN
		DECLARE foundPos tinyint UNSIGNED;
		DECLARE tmpTxt text;
		DECLARE delimLen tinyint UNSIGNED;
		DECLARE element text;
 
		DROP TEMPORARY TABLE IF EXISTS tmpValues;
		CREATE TEMPORARY TABLE tmpValues
		(
			`values` text NOT NULL DEFAULT ''
		);
 
		SET delimLen = length(delim);
		SET tmpTxt = input;
 
		SET foundPos = INSTR(tmpTxt,delim);
		WHILE foundPos <> 0 DO
			SET element = SUBSTRING(tmpTxt, 1, foundPos-1);
			SET tmpTxt = REPLACE(tmpTxt, CONCAT(element,delim), '');
 
			INSERT INTO tmpValues (`values`) VALUES (element);
 
			SET foundPos = INSTR(tmpTxt,delim);
		END WHILE;
 
		IF tmpTxt <> '' THEN
			INSERT INTO tmpValues (`values`) VALUES (tmpTxt);
		END IF;
 
		SELECT * FROM tmpValues;
	END$$
 
DELIMITER ;
Malheureusement je n'arrive pas à faire passe un call dans un IN

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT * FROM ma_table WHERE un_champ IN (CALL ('toto,coco',','));
Ne fonctionne pas.

L'idéal serait de pouvoir transformer cette procédure en fonction, ce que je n'arrive pas à faire.

Auriez-vous une solution à mon problème ?
Merci.

Ps : l'explode de PHP, ne répond pas à mon besoin !