© Éditions Eyrolles
339
chapitre n° 9
Utilisation avec PHP
Procédures cataloguées
Comme dans tout autre langage hôte, PHP permet d’invoquer des procédures cataloguées côté
serveur. Supposons que nous disposions de la procédure augmenteCap qui augmente la
capacité (premier paramètre) des avions d’une compagnie donnée (deuxième paramètre).
CREATE PROCEDURE bdsoutou.augmenteCap(IN nbre TINYINT, IN compag CHAR(4))
BEGIN
UPDATE Avion SET capacite = capacite + nbre WHERE compa = compag;
END;
Paramètre en entrée
Le code suivant (procedureCat.php) appelle cette procédure afin d’augmenter de 50 la
capacité des avions de la compagnie de code 'AF' en utilisant la fonction mysqli_multi_
query. Notez l’utilisation des simples guillemets pour les paramètres en chaînes de caractères.
Pensez à donner l’autorisation à l’utilisateur appelant (ici soutou) d’exécuter la procédure (je
l’ai écrite sous root : GRANT EXECUTE ON PROCEDURE bdsoutou.augmenteCap TO 'soutou'@'localhost'$).
Paramètre en sortie
Afin de travailler avec des paramètres en sortie, il est nécessaire d’utiliser des variables de
session. Une fois ces variables de session initialisées au retour de l’appel du sous-programme,
il faudra extraire chaque valeur à l’aide d’un SELECT dans une requête simple.
Le code suivant (procedureCat2.php) décrit l’appel de la procédure leNomCompagnieEst (décrite au chapitre 8, section Procédures cataloguées) ayant deux paramètres. Le
Web
Tableau 9-15 Appel d’une procédure cataloguée (paramètres d’entrée)
Code PHP
Commentaires
if (($service = mysqli_connect('localhost', 'soutou',
'iut', 'bdsoutou')) > 0)
Connexion.
{$nb
= 50;
$comp = 'AF';
if ($result =
> 0)
{ print "
Procédure réalisée correctement."; }
else
{ print "
La procédure est un échec! ".
; }
mysqli_close($service);
Initialisation des variables
PHP d’appel.
Appel de la procédure.
}
else print "
La connexion est un échec!";
Fermeture de la connexion.
Web
mysqli_multi_query($service,
"call bdsoutou.augmenteCap($nb,'$comp')")
mysqli_error($service)
Précédent

- 361/418

Suivant