Bonjour,
Je bloque sur un soucis d'accès aux données retournées par une procédure stockée (qui va retourner plusieurs "select" ) contenant un curseur, sachant que l'appel se fait via un prepared statement ...
Le code suivant:
Code :
- $stmt = $db->prepare($query);
- $x = 125; $y = 1;
- $stmt->bind_param("ii", $x, $y);
- $stmt->execute();
- do {
- if ($res = $stmt->get_result()) {
- echo "---";
- var_dump($res->fetch_all());
- mysqli_free_result($res);
- }
- } while ($stmt->more_results() && $stmt->next_result());
|
Marche si la procédure n'utilise pas de curseur, et bloque (la page ne s'affiche pas et reste en chargement infiniment...) si la procédure utilise un curseur.
A noter que si les opérations sur le curseur sont après le dernier "select", il n'y a plus de problème ...
Et le code suivant:
Code :
- $stmt = $db->multi_query($query);
- do
- {
- if ($result = $db->store_result()) {
- while ($row = $result->fetch_row()) {
- var_dump($row);
- }
- $result->free();
- }
- if ($db->more_results()) {
- echo "-----------------" );
- }
- }
- while ($db->more_results() && $db->next_result());
|
Marche dans tous les cas (mais ne me permet pas d'utiliser un prepared statement).
Je n'utilise pas beaucoup ces trucs là dernièrement, je me demande si ce n'est pas une restriction "évidente" mais je n'arrive pas à mettre le doigt dessus.
Merci