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:
Et c'est là que ça coince, en sortie, à la place d'un jolie "profile" voici ce que j'obtient:
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"; ?>
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.
Partager