Créons une procédure stockée qui fait un simple SELECT sur une table .
Cette procédure ne prend pas de paramètres en entrée, maisi ramène n lignes, c’est là que ca se complique…
MYSQL> create procedure ps1 ()
begin
select * from dept;
end;
rem : la table DEPT contient 4 lignes de 3 colonnes…
Voici le code PHP correspondant qui lit le ‘RESULT SET’ (tableau de résultats) du SELECT excéuté par la procédure :
<?php
// connexion
$connexion = mysqli_connect(« localhost », « dd », « dd », « test »);/* erreur eventuelle de connexion */
if (mysqli_connect_errno()) {
printf(« Pb lors de la connexion : %s<br> », mysqli_connect_error());
exit();
}
print (« connecte !<br><br> »);/* appel de la procedure stockée */
$ordre_sql = « call ps1(); »;if (mysqli_multi_query($connexion, $ordre_sql)) {
do {
// lecture d’une ligne…
if ($result = mysqli_store_result($connexion)) {
// affichage des 3 colonnes
while ($ligne = mysqli_fetch_row($result)) {
printf(« %s %s %s <br> », $ligne[0], $ligne[1],$ligne[2] );
}
mysqli_free_result($result);
}
// tant qu’il y en a…
} while (mysqli_next_result($connexion));
}/* Fermeture de la connexion */
mysqli_close($connexion);
?>