Bonjour,

Je galère depuis un bout de temps maintenant sur une procédure stockée : quand je la lance manuellement dans un client MySQL, pas de problème, elle s'exécute sans problème quand je lui passe une valeur donnée (c'est pour déboguer en fait), mais quand cette procédure stockée est appelée dans un code PHP, quand je lui transmet cette même valeur, j'ai le message suivant qui apparait :
SQLSTATE[42000]: Syntax error or access violation: 1172 Result consisted of more than one row
D'avance merci pour votre aide

Voici ma procédure stockée complète :
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
BEGIN
 
	DECLARE resaClientId INT;
	DECLARE resaMontantTotal INT;
	DECLARE resaDateMeilleureNuitee VARCHAR(32);
	DECLARE resaRoom VARCHAR(32);
	DECLARE resaMeilleureNuiteeMontant VARCHAR(32);
	DECLARE resaDateArrivee VARCHAR(32);
	DECLARE resaDateDepart VARCHAR(32);
	DECLARE resaNbNuitee INT;
	DECLARE resaPMS VARCHAR(32);
	DECLARE resaBlocDirecteur INT;
	DECLARE clientOptinPS INT;
	DECLARE clientOptinPromo INT;
 
	SELECT DISTINCT client_id, optin_post_sejour, optin_email_promo INTO @resaClientId, @clientOptinPS, @clientOptinPromo
	FROM finalclients 
	WHERE client_id_pms = valeur3 
	LIMIT 1;
 
  IF @resaClientId IS NOT NULL THEN
 
		SELECT DISTINCT date_nuitee INTO @resaDateArrivee 
		FROM fidelioresaslivelocal 
		WHERE resa_num_pms = valeur1 
		ORDER BY date_nuitee ASC
		LIMIT 1;
 
		SELECT DISTINCT date_nuitee INTO @resaDateDepart 
		FROM fidelioresaslivelocal 
		WHERE resa_num_pms = valeur1 
		AND depart = "Y"
		ORDER BY date_nuitee DESC
		LIMIT 1;
 
		SELECT SUM(resa_montant) INTO @resaMontantTotal
		FROM fidelioresaslivelocal 
		WHERE resa_num_pms = valeur1
		AND room = valeur2
		AND NULLIF(depart,'N') IS NULL
		GROUP BY resa_num_pms, room
		LIMIT 1;
 
		SELECT DISTINCT date_nuitee, room, resa_montant INTO @resaDateMeilleureNuitee, @resaRoom, @resaMeilleureNuiteeMontant
		FROM fidelioresaslivelocal 
		WHERE resa_num_pms = valeur1 
		AND room = valeur2
		AND NULLIF(date_nuitee,'N') IS NULL
		GROUP BY room
		ORDER BY resa_montant DESC, date_nuitee DESC
		LIMIT  1;
 
		SELECT COUNT(DISTINCT date_nuitee) INTO @resaNbNuitee 
		FROM fidelioresaslivelocal 
		WHERE resa_num_pms = valeur1
		AND room = valeur2
		AND NULLIF(depart,'N') IS NULL
		GROUP BY resa_num_pms, room
		LIMIT 1;
 
 
		UPDATE finalresas
		SET 
		resa_client_id = @resaClientId,
		resa_montant_total = @resaMontantTotal,
		resa_nb_nuitee = @resaNbNuitee,
		date_meilleure_nuitee = @resaDateMeilleureNuitee,
		room = valeur2,
		resa_meilleure_nuitee_montant = @resaMeilleureNuiteeMontant,
		resa_date_arrivee = @resaDateArrivee,
		resa_date_depart = @resaDateDepart,
		resa_bloc_directeur = IF(((@clientOptinPS = 0) && (@clientOptinPromo = 0)), 1, 0),
		resa_vip = IF((@resaMeilleureNuiteeMontant >= get_seuil_vip_fidelio()), 1,0)
		WHERE resa_num_pms = valeur1 
    AND room = valeur2
    AND resa_num_client_pms = valeur3
		LIMIT 1;
 
		CALL actions_post_update_clients(@resaClientId);
 
  END IF;
 
END