Bonjour tout le monde,

J'aurais besoin de vôtre aide, si vous le voulez bien, pour élucider mon mystère:

J'ai une procédure stocker simple avec un paramètre en sortie dans ma base de données SQL SERVER
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
DROP PROCEDURE [dbo].[PROC_TEST] 
GO
CREATE PROCEDURE [dbo].[PROC_TEST]	@pProfile nvarchar(30) OUTPUT
AS
BEGIN
	SET @pProfile	= 'profile'
END

Je cherche l’exécuter dans mon programme en php et récupérer donc la variable, je le fait de cette manière:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<?php
	require_once '_db.php';
 
	$stmt = $db->prepare('CALL PROC_TEST(?)');
 
	$stmt->bindParam(1, $value, PDO::PARAM_STR, 30);
	$stmt->execute();
 
	echo "value contient :".$value; //Résultat attendue: "value contient :profile";
?>
Et c'est là que ça coince, en sortie, à la place d'un jolie "profile" voici ce que j'obtient:
value contient :½uteôM)@½ption½€½ption½

Alors je me doute qu'il y a quelque chose qui ne vas pas dans mon code pourtant pas bien épais mais quoi?
J'ai essayé plusieurs choses que j'ai trouvé dans divers forum:
  • $stmt->nextRowset();
  • $out = $stmt->fetch();
  • Faire un EXEC ou EXECUTE à la place de CALL
  • Mettre OUTPUT à côté du paramètre


Mais rien ne fonctionne j'ai un résultat à peu près toujours différent mais tout aussi bizarre avec des caractères spéciaux.

Je vous remercie d'avance et je m'en remets à vous.