Partie III
Langages et outils
340
© Éditions Eyrolles
premier (en entrée) indique l’avion de la compagnie recherché, le second (en sortie) contient
le nom de la compagnie.
Notez l’utilisation de :
q
la fonction mysqli_multi_query pour appeler la procédure cataloguée ;
q
la variable de session @v_retour pour récupérer le paramètre en sortie ;
q
la fonction mysqli_query pour extraire la valeur de la variable de session (contenue à
l’indice 0 du tableau résultat, car il n’y a ici qu’une valeur retournée dans le SELECT).
Métadonnées
Plusieurs fonctions permettent d’extraire des informations en provenance du dictionnaire des
données (meta data) à partir d’une instruction SQL. Par exemple, mysqli_stmt_result_
metadata retourne un identifiant de résultat permettant d’extraire des métadonnées à partir
d’une requête préparée. La fonction mysqli_fetch_field retourne un objet qui contient
les métadonnées des colonnes concernées par une requête.
Citons d’autres fonctions comme mysqli_fetch_field_direct et mysqli_fetch_
fields qui sont similaires à mysqli_fetch_field. Une fois l’objet retourné par cette
fonction, il faut extraire certains de ces champs à la demande.
Tableau 9-16 Appel d’une procédure cataloguée (paramètre de sortie)
Code PHP
Commentaires
if ( ($service = mysqli_connect('localhost', 'soutou',
'iut', 'bdsoutou')) > 0)
Connexion.
{$immat = 'F-GAFU';
if ($result =
> 0)
{if ($result2 =
)
{$ligne =
;
if ($ligne[0] == null)
print "
Désolé, l'avion $immat n'a pas de
compagnie!";
else
print "
La compagnie de l'avion $immat est :".
$ligne[0];
mysqli_free_result($result2);
}
else {print "
Problème au retour du paramètre ".
mysqli_error($service); }
}
else {print "
La procédure est un échec! ".
mysqli_error($service).$result; }
Initialisation de la variable
PHP d’appel.
Appel de la procédure.
Extraction de la variable
de session.
Affichage du résultat.
Gestion des erreurs.
mysqli_close($service);
}
else print "
La connexion est un échec!";
Fermeture de
la connexion.
Web
mysqli_multi_query
$service,"call bdsoutou.leNomCompagnieEst
('$immat',@v_retour)")
mysqli_query($service,
"SELECT @v_retour")
mysqli_fetch_array($result2, MYSQLI_NUM)
Précédent

- 362/418

Suivant