Exécution d’une procédure stockée avec mysqli

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);
?>