Bonjour,
J'ai un problème avec une procédure stockée sauvegardé sur phpMyAdmin que j'appelle avec PHP.
Le but de cette procédure stockée est de vérifier que le titre n'a pas déjà été utilisé lors d'un nouvel enregistrement.
Pour ce faire j'utilise la procédure stockée suivante :
Nous devons donc spécifier en valeurs d'entrées le titre que nous souhaitons et l'identifiant (qui sera égal à rien si nous insérons une ligne ou 0, j'ai essayé les deux). En valeur de sortie, nous avons le titre si ils étaient identiques, ou rien si ils sont différents.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 create procedure verify_unique_title_procedure(titre_in text, num_in int, out titre_out text) BEGIN SELECT titre_livret INTO titre_out FROM guide WHERE titre_livret = titre_in AND id <> num_in; END
J'ai testé sous phpMyAdmin, la procédure stockée marche très bien.
En utilisant ce code PHP :
Les deux "echo" du début affiche bien les valeurs. Mais que je mette un titre déjà utilisé ou non, $paramTitle_out est égal à rien.
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 public function callStoredProcedure($paramNum_in, $paramTitle_in) { echo $paramNum_in; //Affiche le numéro echo $paramTitle_in; // Affiche un texte $paramTitle_out = ''; $query = $this->bdd->prepare("CALL verify_unique_title_procedure(titre_in, num_in, titre_out)"); $query->bindParam('titre_in', $paramTitle_in, PDO::PARAM_STR, 50); $query->bindParam('num_in', $paramNum_in, PDO::PARAM_INT); $query->bindParam('titre_out', $paramTitle_out, PDO::PARAM_STR, 50); $query->execute(); echo $paramTitle_out; // Egal à rien si les titres étaient différents mais le même que celui du paramètre d'entrée si les titres étaient identiques. return $paramTitle_out; }
Merci d'avance,
Sylra.
Partager