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
Code : Sélectionner tout - Visualiser dans une fenêtre à part IN ('toto','coco')
Ce qui bien entendu n'a absolument rien à voir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part IN ('toto,coco')
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
Malheureusement je n'arrive pas à faire passe un call dans un IN
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 ;
Ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM ma_table WHERE un_champ IN (CALL ('toto,coco',','));
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 !
Partager